专利摘要:
強化型動的アドレス変換ファシリティを提供すること。 一実施形態において、変換すべき仮想アドレスが最初に取得され、変換テーブル階層構造の変換テーブルの初期基点アドレスが取得される。取得された初期基点に基づいて、セグメント・テーブル・エントリが取得される。セグメント・テーブル・エントリは、フォーマット制御及びアクセス妥当性フィールドを含むように構成される。フォーマット制御及びアクセス妥当性フィールドがイネーブルであれば、セグメント・テーブル・エントリは、アクセス制御フィールド、フェッチ保護フィールド、及びセグメント・フレーム絶対アドレスをさらに含む。ストア動作は、アクセス制御フィールドが、プログラム・ステータス・ワード又は実行中のプログラム命令のオペランドのうちのいずれか1つによって与えられるプログラム・アクセス・キーに一致した場合にのみ許可される。フェッチ動作は、仮想アドレスに関連付けられたプログラム・アクセス・キーが、セグメント・アクセス制御フィールドと等しい場合に許可される。
公开号:JP2011509470A
申请号:JP2010541763
申请日:2009-01-05
公开日:2011-03-24
发明作者:ウェブ、チャールズ;オシセック、ダミアン;グライナー、ダン;ゲイニー、チャールズ、ジュニア;スレゲル、ティモシー;プフェッファー、エルビン;ヘラー、リサ
申请人:インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Maschines Corporation;
IPC主号:G06F12-14
专利说明:

[0001] 本発明は、一般に、コンピュータ・システムにおいて仮想アドレスを変換するためのシステム及び方法に関し、より具体的には、仮想アドレス変換が変換テーブル階層構造を経て生じる動的アドレス・ファシリティを有するコンピュータ・システムにおいて、仮想アドレスをデータ・ブロックの実アドレス又は絶対アドレスに変換するシステム及び方法に関する。]
背景技術

[0002] 動的アドレス変換は、任意の瞬間にプログラムの実行への割り込みを行い、そのプログラム及びそのプログラムのデータを直接アクセス・ストレージ・デバイスなどの補助ストレージに記録し、後の時点で、プログラム及びデータを異なる主ストレージ位置に戻して実行を再開する能力を提供する。主ストレージと補助ストレージとの間のプログラム及びデータの転送は断片的に行うことができ、主ストレージへの情報のリターンは、その情報が実行のために必要になった時点でCPUによるアクセスの試行に応答して行われるものとすることができる。これらの機能は、プログラム及びそのデータを変更又は検査することなく実施することができ、再配置されたプログラムにおけるいかなる明示的なプログラミング規則も必要とせず、時間的遅延が伴うことを除いて、プログラムの実行を妨げない。]
[0003] オペレーティング・システムによる適切なサポートがあれば、動的アドレス変換ファシリティを用いて、ユーザに、ストレージがその構成において利用可能な主ストレージより大きく見えるようなシステムを提供することができる。この見かけの主ストレージは、しばしば仮想ストレージと呼ばれ、仮想ストレージ内の位置を指定するために用いられるアドレスは、しばしば仮想アドレスと呼ばれる。ユーザの仮想ストレージは、その構成において利用可能な主ストレージのサイズを遥かに超過することができ、通常は補助ストレージ内で維持される。仮想ストレージは、一般にページと呼ばれる(セグメント及び領域とも呼ばれる)データのブロックで構成されるものと見なされる。仮想ストレージのうち、直前に参照されたページのみが、物理的主ストレージのブロックを占有するように割り当てられる。ユーザが、主ストレージに現れていない仮想ストレージのページを参照する際には、それらのページを取り込んで、必要とされる可能性の低い主ストレージ内のページを置き換える。幾つかの場合には、仮想ストレージは、ストレージが参照されるかどうかに関わりなく、長期間にわたって(又は永続的に)主ストレージに割り当てられる。ストレージのページのスワッピングは、オペレーティング・システムによって、ユーザが知ることなく行われる。]
[0004] プログラムは、アドレス(又は仮想アドレス)を用いて仮想ストレージにアクセスする。プログラムは仮想アドレスを用いて、仮想ストレージから命令をフェッチすることができ、又は仮想ストレージからデータをロードするか若しくはデータをストアすることができる。ある範囲の仮想ストレージに関連付けられた仮想アドレスが、アドレス空間を定める。オペレーティング・システムによる適切なサポートがあれば、動的アドレス変換ファシリティを用いて、多数のアドレス空間を提供することができる。これらのアドレス空間を用いて、ユーザ間に様々な度合いの分離を提供することができる。このようなサポートは、ユーザごとに完全に異なるアドレス空間から成ることによって完全な分離を提供することもでき、又は各アドレス空間の一部を単一の共通ストレージ領域にマッピングすることによって共有エリアを提供することもできる。また、半特権的プログラムが1つより多くのこのようなアドレス空間にアクセスすることを許可する命令も、提供される。]
[0005] 動的アドレス変換は、多数の異なるアドレス空間からの仮想アドレスの変換を規定する。これらのアドレス空間は、一次アドレス空間、二次アドレス空間、及びアクセス・レジスタ指定アドレス空間と呼ばれる。特権的プログラムは、アクセスすべきホーム・アドレス空間を生じさせることもできる。動的アドレス変換は、CPUによって生成された命令及びデータ・アドレスに対して指定することができる。]
[0006] 当該技術分野において今まで知られていない更なる機能、能力、及び保護を提供する、強化された動的アドレス変換ファシリティが必要とされている。]
[0007] 米国特許第5,551,013号
米国特許第5,574,873号
米国特許第5,790,825号
米国特許第6,009,261号
米国特許第6,308,255号
米国特許第6,463,582号]
先行技術

[0008] 「z/Architecture(登録商標) Principles of Operation」、IBM(登録商標)刊行番号SA22−7832−05、第6版、2007年4月
「IBM(登録商標)System/370 Extended Architecture」、IBM(登録商標)刊行番号SA22−7095、1985年]
発明が解決しようとする課題

[0009] 仮想アドレスを、変換のために用いられる変換テーブル階層構造を備えたマシン・アーキテクチャを有するコンピュータ・システムの主ストレージ内の所望のデータ・ブロックの実アドレス又は絶対アドレスに変換する強化型動的アドレス変換ファシリティのためのシステム、方法、及びコンピュータ・プログラム製品が提供される。実アドレスにプリフィックス付加を行って、絶対アドレスを形成することができる。]
課題を解決するための手段

[0010] 1つの例示的な実施形態において、変換されるべき仮想アドレス、及び変換テーブル階層構造の変換テーブルの初期基点アドレスが取得される。変換テーブルは、領域第1テーブル、領域第2テーブル、領域第3テーブル、又はセグメント・テーブルから成る。取得された初期基点アドレスに基づいて、セグメント・テーブル・エントリがセグメント・テーブルから取得される。セグメント・テーブル・エントリは、フォーマット制御フィールドを含むように構成される。強化型DATファシリティ及びフォーマット制御フィールドがイネーブルであれば、セグメント・テーブル・エントリ内のアクセス妥当性フィールドがイネーブルであるかどうかが判定される。アクセス妥当性フィールドがイネーブルであれば、セグメント・テーブル・エントリは、アクセス制御フィールド、保護フィールド、及び主ストレージ内の大データ・ブロックのセグメント・フレーム絶対アドレスをさらに含む。大データ・ブロックは少なくとも1メガバイトのサイズのブロックである。アクセス制御フィールドがイネーブルであれば、所望のデータ・ブロックへのストア動作は、アクセス制御フィールドがプログラム・ステータス・ワード又は実行中のプログラム命令のオペランドのいずれかによって与えられるプログラム・アクセス・キーに一致した場合にのみ、許可される。所望のデータ・ブロックからのフェッチ動作は、仮想アドレスに関連付けられたプログラム・アクセス・キーがアクセス制御フィールドに等しい場合にのみ、許可される。]
[0011] さらに別の実施形態において、アクセス妥当性フィールドがイネーブルであれば、フェッチ動作又はストア動作が所望のメモリ・ブロックにおいて試行され、且つセグメント・アクセス制御フィールドがプログラム・アクセス制御フィールドと一致しないことに応答して、保護例外が示される。]
[0012] 本発明は、次に、特定の例示的な実施形態との関連で説明される。当業者であれば本発明の精神及び範囲から逸脱することなく種々の変更及び修正を行うことが可能であることを理解されたい。]
[0013] 添付の図面において、同一又は機能的に類似の要素には別々の図の全体を通じて同様の参照符号が付されており、これらの図面は以下の詳細な説明と共に本明細書に組み入れられ、その一部を形成するものであり、種々の実施形態をさらに例証し、且つ、全て本発明に従う種々の原理及び利点を説明する役割を果たす。]
図面の簡単な説明

[0014] 強化型動的アドレス変換を実施することができるホスト・コンピュータ・システムの一実施形態を示す。
ホスト・アーキテクチャのホスト・コンピュータ・システムをエミュレートする、エミュレートされたホスト・コンピュータ・システムの一例を示す。
プログラム・ステータス・ワードを用いて仮想アドレスの動的アドレス変換のための実効ASCEを判定する手法の一実施形態を示す。
図3において判定された実効ASCEを用いて、仮想アドレスの変換に用いられる変換テーブル階層構造の中で最も高位の変換テーブルを判定する一実施形態を示す。
変換テーブル階層構造をセグメント・テーブル・レベルまで用いて仮想アドレスを動的アドレス変換するプロセスの一実施形態を示す。
セグメント・テーブル・エントリ(STE)フォーマット制御(FC)が0である場合の、図5の動的アドレス変換の続きを示す。
セグメント・テーブル・エントリ(STE)フォーマット制御(FC)が1である場合の、図5の動的アドレス変換の続きを示す。
セグメント・テーブル・エントリ内のフォーマット制御フィールドを取得するための強化型(enhanced)動的アドレス変換(eDAT)の一実施形態の流れ図を示す。
図8のノード614からの流れ図の続きを示す。
図8のノード616からの流れ図の続きを示す。
変換された仮想アドレスによってアドレス指定された所望のデータ・ブロックに適用すべきDAT保護のレベルを判定する一実施形態の流れ図を示す。
変換された仮想アドレスによってアドレス指定された所望のデータ・ブロックに適用すべきアクセス制御保護のレベルを判定する、図10のノード822からの流れ図の続きを示す。
変換された仮想アドレスによってアドレス指定された所望のデータ・ブロックに適用すべきフェッチ保護のレベルを判定する、図10のノード822からの流れ図の続きを示す。
変更記録オーバーライド・フィールドがセグメント・テーブル・エントリから取得される、図10のノード822からの流れ図の続きを示す。
実アドレスと絶対アドレスとの間の関係を示す。] 図10 図3 図5 図8
実施例

[0015] 本出願の明細書における記述は、特許請求される種々の発明いずれをも必ずしも限定するものではないことを理解されたい。さらに、幾つかの記述は、幾つかの発明の特徴に当てはまることがあるが、他の発明の特徴には当てはまらないこともある。特に断りのない限り、単数形の要素は、一般性を失うことなく、複数形の場合もあり、その逆もまた真である。]
[0016] 当業者であれば、コンピュータ環境内のストレージに対してアドレス指定すること、及び、様々な状態及びそれらの状態上での動作を示すためにレジスタ又はアドレス・フィールド内のビットを使用することに容易に精通するはずである。さらに、当業者であれば、コンピュータ・プログラム分野の知識を有し、かつ、コンピュータ・システムのコンポーネント間の働き及び相互関係についての知識を有しているはずである。]
[0017] 概要
強化型動的アドレス変換(DAT)ファシリティの例示的な実施形態が提供される。強化型DATファシリティがインストールされており、且つイネーブルである場合、DAT変換は、ページ・フレーム実アドレス、又はセグメント・テーブル・エントリ内のセグメント・テーブル・エントリ(STE)フォーマット制御によって決定されるセグメント・フレーム絶対アドレスを生成することができる。本明細書において用いられる「強化型DATを適用する」という用語は、以下の全てが真であることを意味する。即ち、1)EDATファシリティがインストールされており、2)EDATファシリティが制御レジスタ0(CR0)ビット40を通じてイネーブルになっており、且つ3)アドレスはDATテーブル・エントリによって変換される。]
[0018] 強化型DATを適用する場合、DATプロセスにおいて以下の追加機能が利用可能である。即ち、
DAT保護ビットが領域テーブル・エントリに追加され、セグメント・テーブル・エントリ及びページ・テーブル・エントリ内のDAT保護ビットと同様の機能を与える。
STEフォーマット制御がセグメント・テーブル・エントリに追加される。STEフォーマット制御が0である場合、DATは、そのページに対する変更ビットの設定がバイパスされるかどうかをページ・テーブル・エントリ内の変更記録オーバーライドが示すこと以外は、現在定められている通りに進行する。]
[0019] STEフォーマット制御が1である場合、セグメント・テーブル・エントリは、さらに以下を含む。即ち、
1メガバイト・ブロックの絶対ストレージ位置を指定するセグメント・フレーム絶対アドレス(ページ・テーブル基点ではなく)。
セグメントの個々のストレージ・キーの中の対応するビットの代わりに随意的に用いることができる、アクセス制御ビット及びフェッチ保護ビット。
セグメント・テーブル・エントリ内のアクセス制御ビット及びフェッチ保護ビットの妥当性を決定するビット。
セグメントの個々のストレージ・キーにおいて変更ビットの設定をバイパスすることができるかどうかを示す、変更記録オーバーライド。]
[0020] ホスト・コンピュータ・システム
図1を参照すると、ホスト・コンピュータ・システム100の代表的なコンポーネントが描かれている。他のコンポーネント構成をコンピュータ・システムにおいて用いることもでき、これは当該技術分野において周知である。] 図1
[0021] ホスト・コンピュータ環境は、ニューヨーク州Armonk所在のInternational Business Machines Corporation(IBM(登録商標))により提供される、z/Architecture(登録商標)に基づくものであることが好ましい。z/Architecture(登録商標)は、引用によりその全体をここに組み入れる非特許文献1に、より詳細に記載されている。z/Architecture(登録商標)に基づくコンピュータ環境は、例えば、共にIBM(登録商標)によるeServer及びzSeries(登録商標)を含む。]
[0022] 代表的なホスト・コンピュータ100は、1つ又は複数のCPU101を含み、これは、主ストア(コンピュータ・メモリ102)、並びに、ストレージ・デバイス111に対するI/Oインターフェース、及び他のコンピュータ又はストレージ・エリア・ネットワーク(SAN)などとの通信のためのネットワーク110に対するI/Oインターフェースと通信する。CPUは、プログラム・アドレス(仮想アドレス)をメモリの実アドレスに変換するための動的アドレス変換(DAT)ファシリティ(機能又はユニット)103を含む。DATファシリティは、典型的には、後でコンピュータ・メモリ102のブロックにアクセスしたときにアドレス変換による遅延を必要とせずに済むように変換をキャッシュに入れるための、変換ルックアサイド・バッファ107を含む。典型的には、キャッシュ109は、コンピュータ・メモリ102とプロセッサ101との間で用いられる。キャッシュ109は、1つより多くのCPUが利用できる大型キャッシュと、大型キャッシュと各CPUとの間のより小型でより高速な(下位レベルの)キャッシュとを有する階層構造とすることができる。幾つかの実装において、下位レベルのキャッシュは、命令のフェッチ及びデータ・アクセスのための個別の低レベルキャッシュを提供するように分割される。一実施形態において、命令は、命令フェッチ・ユニット104によりメモリ102からキャッシュ109を経由してフェッチされる。命令は、命令デコード・ユニット(106)内でデコードされ、(幾つかの実施形態においては他の命令と共に)命令実行ユニット108へディスパッチされる。典型的にはいくつかの実行ユニット108、例えば、算術演算実行ユニット、浮動小数点実行ユニット、及び分岐命令実行ユニットが用いられる。命令は、実行ユニットにより、必要に応じて命令が指定するレジスタ又はメモリからのオペランドにアクセスしながら実行される。オペランドがメモリ102からアクセスされる(ロードされる又はストアされる)場合には、典型的には、ロード・ストア・ユニット105が、実行されている命令の制御下でアクセスを取り扱う。]
[0023] 一実施形態において、本発明は、ソフトウェア(ライセンス内部コード(LIC)、ファームウェア、マイクロ・コード、ミリ・コード、ピコ・コードなどと呼ばれる場合もあるが、そのいずれも本発明と整合性がある)により実施することができる。本発明を具体化するソフトウェア・プログラム・コードは、典型的には、コンピュータ・システム100のCPU(中央演算処理装置)101としても知られるプロセッサにより、CD‐ROMドライブ、テープ・ドライブ又はハード・ドライブといった長期ストレージ媒体111からアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハード・ドライブ又はCD‐ROMといった、データ処理システムと共に使用するための種々の公知の媒体のいずれかの上で具体化することができる。コードは、そのような媒体上で配布することができ、又は1つのコンピュータ・システムのコンピュータ・メモリ102若しくはストレージから、他のシステムのユーザが使用するために、ネットワーク110を介してそのような他のコンピュータ・システムに配布することができる。]
[0024] あるいは、プログラム・コードをメモリ102内で具体化し、プロセッサ・バスを用いてプロセッサ101によってアクセスすることができる。このようなプログラム・コードは、種々のコンピュータ・コンポーネント及び1つ又は複数のアプリケーション・プログラムの機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、高密度ストレージ媒体111から高速メモリ102にページングされ、そこでプロセッサ101による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理媒体上で具体化し、及び/又はネットワークを介してソフトウェア・コードを配布する技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、作成され、有形の媒体(電子メモリ・モジュール(RAM)、フラッシュメモリ、コンパクトディスク(CD)、DVD、磁気テープなどを含むがこれらに限定されない)に格納された場合には、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品媒体は、典型的には、処理回路によって実行されるために、好ましくはコンピュータ・システム内にある処理回路によって読み出し可能である。]
[0025] 図2に、ホスト・アーキテクチャのホスト・コンピュータ・システム100をエミュレートする、エミュレートされたホスト・コンピュータ・システム201の一例を示す。エミュレートされたホスト・コンピュータ・システム201において、ホスト・プロセッサ(CPU)208は、エミュレートされたホスト・プロセッサ(又は仮想ホスト・プロセッサ)であり、ホスト・コンピュータ100のプロセッサ101によって用いられるものとは異なるネイティブ命令セット・アーキテクチャを有するエミュレーション・プロセッサ207を備える。エミュレートされたホスト・コンピュータ・システム201は、エミュレーション・プロセッサ207によってアクセス可能なメモリ202を有する。例示的な実施形態において、メモリ202は、ホスト・コンピュータ・メモリ102部分と、エミュレーション・ルーチン203部分(エミュレーションを提供するルーチンはホスト・メモリの一部とすることができる)とのパーティションに分けられている。ホスト・コンピュータ・メモリ102は、ホスト・コンピュータ・アーキテクチャに従い、エミュレートされたホスト・コンピュータ・システム201のプログラムによって利用可能である。エミュレーション・プロセッサ207は、エミュレートされたプロセッサ208のアーキテクチャ以外のアーキテクチャのアーキテクチャ化された(architected)命令セットのネイティブ命令を実行し、このネイティブ命令はエミュレーション・ルーチン・メモリ203から取得されたものであり、且つ、エミュレーション・プロセッサ207は、シーケンス及びアクセス/デコード・ルーチンにおいて取得される1つ又は複数の命令を用いることによって、ホスト・コンピュータ・メモリ102の中のプログラム由来の実行のためのホスト命令にアクセスすることができ、このシーケンス及びアクセス/デコード・ルーチンは、アクセスされたホスト命令をデコードして、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを判定することができる。] 図2
[0026] ホスト・コンピュータ・システム100アーキテクチャのために定義された、例えば、汎用レジスタ、制御レジスタ、動的アドレス変換、並びにI/Oサブシステム・サポート及びプロセッサ・キャッシュといったファシリティを含む他のファシリティを、アーキテクチャ化ファシリティ・ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を高めるために、エミュレーション・プロセッサ207において利用可能な(汎用レジスタ、及び仮想アドレスの動的変換といった)ファシリティを利用することもできる。ホスト・コンピュータ100の機能をエミュレートする際にプロセッサ207を補助するために、特殊ハードウェア及びオフ・ロード・エンジンを設けることもできる。]
[0027] コンピュータ・プロセッサ及びレジスタ
一実施形態において、CPUのプログラム命令機能は、通信バスを介して複数のレジスタと通信する。通信バスは、CPUの内部にあっても、又は外部にあってもよい。いくつかのレジスタは読み出し専用とすることができる。他のハードウェア及び/又はソフトウェアも、CPUによってアクセス可能な1つ又は複数のレジスタを読み出す/書き込むことができる。命令動作コード(オペコード)が、いずれかの特定のマシン命令動作において、どのタイプのレジスタが用いられるかを決定する。]
[0028] 汎用レジスタ
命令は、16個の汎用レジスタのうちの1つ又は複数の中の情報を指示することができる。汎用レジスタは、アドレス算術演算におけるベース・アドレス・レジスタ及びインデックス・レジスタとして用いることができ、且つ、一般算術演算及び論理演算におけるアキュムレータとして用いることができる。各レジスタは、64個のビット位置を含む。汎用レジスタは、番号0−15によって識別され、命令内の4ビットのRフィールドによって指示される。ある命令は、数個のRフィールドを有することによって、複数の汎用レジスタをアドレス指定することを規定する。命令によっては、特定の汎用レジスタの使用は、命令のRフィールドによって明示的に指示されるのではなく暗黙的であることもある。]
[0029] 演算によっては、2つの隣接する汎用レジスタのビット32−63又は0−63のいずれかを結合して、それぞれ、64ビット又は128ビット形式を提供する場合もある。これらの演算においては、プログラムは、最左端(高位)の32ビット又は64ビットを含む偶数番号のレジスタを指示しなければならない。次に高位の番号のレジスタは最右端(低位)の32ビット又は64ビットを含む。一般算術演算及び論理演算におけるアキュムレータとしての使用に加えて、16個の汎用レジスタのうちの15個は、アドレス生成におけるベース・アドレス及びインデックス・レジスタとして用いることもできる。これらの場合において、レジスタは、命令内の4ビットのBフィールド又はXフィールドによって指示される。B又はXフィールドにおける0の値は、適用されるべきベース又はインデックスが存在しないことを指定し、従って、汎用レジスタ0を、ベース・アドレス又はインデックスを含むものとして指示することはできない。]
[0030] 制御レジスタ
制御レジスタは、プログラム・ステータス・ワードの外部での制御情報の保持及び操作を規定する。CPUは、各々が64のビット位置を有する16個の制御レジスタを有する。レジスタ内のビット位置は、プログラム・イベント記録のようなシステム内の特定のファシリティに割り当てられ、ある演算を行うことができることを指定すること、又はそのファシリティが要求する特別な情報を供給することのどちらかのために用いられる。制御レジスタは、番号0−15によって識別され、LOAD CONTROL命令及びSTORE CONTROL命令内の4ビットのRフィールドによって指示される。複数の制御レジスタを、これらの命令によってアドレス指定することが可能である。]
[0031] 制御レジスタ1
制御レジスタ1は、一次アドレス空間制御要素(PASCE)を含む。一実施形態において、制御レジスタ1は、レジスタ内の実空間制御ビット(R)に応じて、以下の2つのフォーマットのうちの1つを有する。]
[0032] 一次アドレス空間制御要素(PASCE)内の選択されたフィールドは、以下のように割り振られる。
一次領域テーブル又はセグメント・テーブル基点:制御レジスタ1の中の一次領域テーブル又はセグメント・テーブル指示のビット0−51は、右に12個の0が付加されると、一次領域テーブル又はセグメント・テーブルの開始位置を指示する64ビット・アドレスを形成する。このアドレスが実であるか絶対であるかは予測不可能である。このテーブルは、一次アドレス空間における仮想アドレスを変換するために用いられるので、一次領域テーブル又はセグメント・テーブルと呼ばれる。]
[0033] 一次実空間制御(R):制御レジスタ1のビット58が0であれば、レジスタは領域テーブル又はセグメント・テーブル指示を含む。ビット58が1であれば、レジスタは実空間指示を含む。ビット58が1である場合、セグメント・テーブル・エントリの変換ルックアサイド・バッファ表示内の共通セグメント・ビットの値1は、制御レジスタ1の中のトークン基点と変換ルックアサイド・バッファ・エントリの中のテーブル基点との間に一致が存在したとしても、一次アドレス空間への参照を変換するときにエントリ及びそれが指示する変換ルックアサイド・バッファ・ページ・テーブル・コピーが用いられることを防止する。]
[0034] 一次指示タイプ制御(DT):Rが0である場合、制御レジスタ1の中のテーブル指示タイプは、レジスタ内のビット60及び61によって以下のように指定される。]
[0035] Rが0である場合、最左端の1ビットがアドレスのビット位置0−10にある仮想アドレスを変換するためにPASCEの使用が試行される場合には、ビット60及び61は二進数字11でなければならない。同様に、最左端の1ビットがアドレスのビット位置11−21にある場合には、ビット60及び61は二進数字11又は10でなければならず、最左端の1ビットがアドレスのビット位置22−32にある場合には、二進数字11、10、又は01でなければならない。それ以外の場合には、ASCEタイプ例外が認識される。]
[0036] 一次領域テーブル又はセグメント・テーブル長(TL):制御レジスタ1の中の一次領域テーブル指示又はセグメント・テーブル指示のビット62及び63は、一次領域テーブル又はセグメント・テーブルの長さを4,096バイトの単位で指定し、従って、領域テーブル又はセグメント・テーブルの長さを512エントリの倍数として可変にする。一次領域テーブル又はセグメント・テーブルの長さは、4,096バイト単位で、TLの値より1多い。長さフィールドの内容は、そのテーブルによって変換されるべき仮想アドレスの一部(RFX、RSX、RTX、又はSX)が、そのテーブルの範囲内にあるエントリを指示しているかどうかを確立するために用いられる。]
[0037] 一次実空間トークン基点:制御レジスタ1の中の一次実空間のビット0−51は、右に12個の0が付加されると、64ビットのアドレスを形成し、このアドレスは、一次アドレス空間の参照のための仮想と実が等しい変換(virtual equals real translation)を提供する変換ルックアサイド・バッファ・エントリの形成及び使用の際に用いることができる。このアドレスはトークンとしてのみ用いられるものであり、ストレージ参照を実施するために用いられるものではないが、それでもなお、有効なアドレスでなければならない。そうでなければ、制御レジスタ1の内容が用いられるときに、正しくない変換ルックアサイド・バッファ・エントリが用いられることがある。]
[0038] 制御レジスタ1の以下のビット、即ち、レジスタが領域テーブル指示又はセグメント・テーブル指示を含む場合のビット52、53及び59、レジスタが実空間指示を含む場合のビット52、53及び59−63は、割り当てられず、無視される。]
[0039] 制御レジスタ7
制御レジスタ7は、二次アドレス空間制御要素(SASCE)を含む。一実施形態において、制御レジスタ7は、レジスタ内の実空間制御ビット(R)に応じて、以下の2つのフォーマットのうちの1つを有する。即ち、]
[0040] 制御レジスタ13
制御レジスタ13は、ホーム・アドレス空間制御要素(HASCE)を含む。一実施形態において、制御レジスタ13は、レジスタ内の実空間制御ビット(R)に応じて、以下の2つのフォーマットのうちの1つを有する。即ち、]
[0041] アクセス・レジスタ
CPUは、0−15の番号を与えられた16個のアクセス・レジスタを有する。アクセス・レジスタは、ASCEの間接的な指定を含む32個のビット位置から成る。ASCEは、動的アドレス変換(DAT)機構によって、対応するアドレス空間に対する参照を変換するために用いられるパラメータである。CPUがアクセス・レジスタ・モードと呼ばれるモード(プログラム・ステータス・ワード内のビットによって制御される)にある場合、ストレージ・オペランド参照のための論理アドレスを指定するために用いられる命令Bフィールドがアクセス・レジスタを指示し、そのアクセス・レジスタによって指定されるASCEが、DATによって、行われている参照のために用いられる。命令によっては、Bフィールドの代わりにRフィールドが用いられることもある。アクセス・レジスタの内容をロード及びストアするための命令、並びに1つのアクセス・レジスタの内容を別のアクセス・レジスタに移動するための命令が与えられる。]
[0042] アクセス・レジスタ1−15の各々は、現在の命令空間(一次アドレス空間)を含めた任意のアドレス空間を指示することができる。アクセス・レジスタ0は、一次アドレス空間を指示する。アクセス・レジスタ1−15のうちの1つがアドレス空間を指示するために用いられている場合、CPUは、そのアクセス・レジスタの内容を変換することによって、どのアドレス空間が指示されているかを判定する。アクセス・レジスタ0がアドレス空間を指示するために用いられる場合、CPUは、そのアクセス・レジスタが一次命令空間を指示するものとして扱い、アクセス・レジスタの実際の内容は検査しない。従って、16個のアクセス・レジスタは、任意の一時点に、一次命令空間と、最大で15個の他の空間とを指示することができる。]
[0043] プログラム・ステータス・ワード(PSW)
プログラム・ステータス・ワードは、命令アドレスと、条件コードと、命令の順序付けを制御し、CPUの状態を決定するために用いられる他の情報とを含む。アクティブな又は制御中のプログラム・ステータス・ワードは、カレント・プログラム・ステータス・ワードと呼ばれる。これは、現在実行されているプログラムを支配する。]
[0044] CPUは割り込み能力を有し、これにより、CPUを例外条件及び外部刺激に応答して別のプログラムに迅速に切り替えることが可能になる。割り込みが発生すると、CPUは、カレント・プログラム・ステータス・ワードを、古いプログラム・ステータス・ワード位置と呼ばれる、特定の割り込みのクラス毎に割り当てられたストレージ位置に置く。CPUは、第2の割り当てられたストレージ位置から新たなプログラム・ステータス・ワードをフェッチする。この新たなプログラム・ステータス・ワードが、次に実行されるプログラムを決定する。割り込みの処理が終了すると、割り込みを扱うプログラムは、割り込まれたプログラムが続行できるように、古いプログラム・ステータス・ワードをリロードして、それを再びカレント・プログラム・ステータス・ワードとすることができる。]
[0045] 割り込みには、外部、I/O、マシン・チェック、プログラム、再起動、及びスーパーバイザー・コールの6つのクラスがある。各クラスは、実ストレージに永続的に割り当てられた、古いプログラム・ステータス・ワード位置と新しいプログラム・ステータス・ワード位置との別個のペアを有する。]
[0046] カレント・プログラム・ステータス・ワード
CPU内のカレント・プログラム・ステータス・ワードは、現在アクティブなプログラムの実行に必要な情報を含む。プログラム・ステータス・ワードは、128ビット長であり、命令アドレス、条件コード、及び他の制御フィールドを含む。一般に、プログラム・ステータス・ワードは、命令の順序付けを制御し、CPUの状態のうちの多くを、現在実行中のプログラムとの関係で保持及び表示するために用いられる。付加的な制御及び状態情報は、制御レジスタ及び永続的に割り当てられたストレージ位置に含まれる。CPUの状態は、新たなプログラム・ステータス・ワード又はプログラム・ステータス・ワードの一部をロードすることによって変更することができる。]
[0047] CPUの割り込み中に、CPUの状態を保存するためにカレント・プログラム・ステータス・ワードをストアし、次いで新たなプログラム・ステータス・ワードをロードすることによって、制御が切り替えられる。LOAD PSW又はLOAD PSW EXTENDEDの実行、又は初期プログラム・ロード・シーケンスの終結の成功により、新たなプログラム・ステータス・ワードが導入される。命令アドレスは、逐次的な命令実行によって更新され、成功した分岐によって置換される。プログラム・ステータス・ワードの一部の上で動作する他の命令が与えられる。]
[0048] プログラム・ステータス・ワードを変更する命令の割り込み又は実行が完了すると、新たな又は修正されたプログラム・ステータス・ワードがアクティブになる(即ち、カレント・プログラム・ステータス・ワードに導入された情報がCPUに対する制御を担う)。プログラム・ステータス・ワードを変更する命令に関連するプログラム・イベント記録(PER)のための割り込みは、その動作の開始時に有効なPERマスクの制御下で生じる。プログラム・ステータス・ワードのビット0−7は集合的にシステム・マスクと呼ばれる。一実施形態において、プログラム・ステータス・ワードは以下のフォーマットを有する。]
[0049] 以下は選択されたプログラム・ステータス・ワードフィールドの機能の概要である。]
[0050] DATモード(T):ビット5は、ストレージにアクセスするために用いられる論理アドレス及び命令アドレスの暗黙的な動的アドレス変換が行われるかどうかを制御する。ビット5が0である場合には、DATはオフであり、論理アドレス及び命令アドレスは実アドレスとして扱われる。ビット5が1である場合には、DATはオンであり、動的アドレス変換機構が起動される。]
[0051] PSWキー:ビット8−11は、CPUによるストレージ参照のためのアクセス・キーを形成する。参照がキー制御保護を受ける場合は、情報がストアされるとき又は情報がフェッチに対して保護されている位置からフェッチされるときに、PSWキーは、ストレージ・キーと照合される。しかし、MOVETO PRIMARY、MOVE TO SECONDARY、MOVE WITHKEY、MOVE WITH SOURCE KEY、及びMOVE WITH DESTINATION KEYの各々のオペランドのうちの1つについては、オペランドとして指定されるアクセス・キーがPSWキーの代わりに用いられる。]
[0052] アドレス空間制御(AS):ビット16及び17は、プログラム・ステータス・ワードのビット5と共に、変換モードを制御する。]
[0053] 条件コード(CC):ビット18及び19は2ビットの条件コードである。条件コードは、特定の命令の実行で得られた結果に応じて、0、1、2、又は3に設定される。ほとんどの算術演算及び論理演算、並びに幾つかの他の演算は、条件コードを設定する。BRANCH ON CONDITION命令は、分岐のための基準として、条件コード値のいずれかの選択を指定することができる。]
[0054] 命令アドレス:プログラム・ステータス・ワードのビット64−127は、命令アドレスである。このアドレスは、CPUが待機状態(プログラム・ステータス・ワードのビット14が1)でない限り、次に実行される命令の最左端のバイトの位置を指示する。]
[0055] アドレスのタイプ及びフォーマット
主ストレージをアドレス指定するために、絶対、実、及び仮想の3つの基本的なアドレスのタイプが認識される。アドレスは、ストレージ・アクセスの間にアドレスに適用される変形に基づいて区別される。アドレス変換は、仮想アドレスを実アドレスに変換する。プリフィックス付加は、実アドレスを絶対アドレスに変換する。3つの基本的なアドレス・タイプに加えて、命令及びカレント・モードに応じて、3つの基本的なタイプのうちの1つ又は他の1つとして扱われる付加的なタイプが定義される。]
[0056] 絶対アドレス
絶対アドレスは、主ストレージ位置に割り当てられたアドレスである。絶対アドレスは、いかなる変形も行われることなく、ストレージ・アクセスのために用いられる。構成内のチャネル・サブシステム及び全てのCPUは、同じ絶対アドレスを用いることによっで、共有された主ストレージ位置を参照する。利用可能な主ストレージには、通常、0から始まる連続した絶対アドレスが割り当てられ、このアドレスは整数の境界上の完全な4キロバイトのブロックで割り当てられる。物理位置に割り当てられていないブロック内の絶対アドレスを用いようとする試行が行われた場合、例外が認識される。幾つかのモデルでは、オペレータが絶対アドレスと物理位置との間の対応を変更することを許可する、ストレージ再構成制御が提供されることがある。しかし、どの時点であっても、1つの物理位置に1つより多くの絶対アドレスが割り当てられることはない。その絶対アドレスに従って配列されたバイト位置から成るストレージを、絶対ストレージと呼ぶ。]
[0057] 実アドレス
実アドレスは、実ストレージにおける位置を特定する。主ストレージへのアクセスのために実アドレスが用いられる場合には、実アドレスをプリフィックス付加によって変換して、絶対アドレスが形成される。任意の一瞬において、構成内のCPUごとに、実アドレスから絶対アドレスへのマッピングが1つ存在する。実アドレスが、CPUによって主ストレージにアクセスするために用いられる場合には、実アドレスをプリフィックス付加によって絶対アドレスに変換することができる。具体的な変形は、そのCPUのためのプリフィックス・レジスタ内の値によって定められる。その実アドレスに従って配列されたバイト位置から成るストレージを、実ストレージと呼ぶ。]
[0058] 仮想アドレス
仮想アドレスは、仮想ストレージにおける位置を特定する。主ストレージへのアクセスのために仮想アドレスが用いられる場合には、仮想アドレスは、動的アドレス変換によって、プリフィックス付加を行うと絶対アドレスを形成することができる実アドレスに変換されるか、又は直接、絶対アドレスに変換されるかのいずれかである。]
[0059] 一次仮想アドレス
一次仮想アドレスは、一次アドレス空間制御要素(PASCE)によって変換されるべき仮想アドレスである。論理アドレスは、一次空間モードにある場合に一次仮想アドレスとして扱われる。命令アドレスは、一次空間モード、二次空間モード、又はアクセス・レジスタ・モードにある場合に一次仮想アドレスとして扱われる。MOVETO PRIMARYの第1オペランド・アドレス、及びMOVE TO SECONDARYの第2オペランド・アドレスは、一次仮想アドレスとして扱われる。]
[0060] 二次仮想アドレス
二次仮想アドレスは、二次アドレス空間制御要素(SASCE)によって変換されるべき仮想アドレスである。論理アドレスは、二次空間モードにある場合に二次仮想アドレスとして扱われる。MOVETO PRIMARYの第2オペランド・アドレス、及びMOVE TO SECONDARYの第1オペランド・アドレスは、二次仮想アドレスとして扱われる。]
[0061] AR指定仮想アドレス
AR指定仮想アドレスは、アクセス・レジスタ指定アドレス空間制御要素によって変換されるべき仮想アドレスである。論理アドレスは、アクセス・レジスタ・モードにある場合にAR指定仮想アドレスとして扱われる。]
[0062] ホーム仮想アドレス
ホーム指定仮想アドレスは、ホーム・アドレス空間制御要素(HASCE)によって変換されるべき仮想アドレスである。論理アドレス及び命令アドレスは、ホーム空間モードにある場合にホーム仮想アドレスとして扱われる。]
[0063] 命令アドレス
ストレージから命令をフェッチするために用いられるアドレスは、命令アドレスと呼ばれる。命令アドレスは、実モードにあるときには実アドレスとして扱われ、一次空間モード、二次空間モード、又はアクセス・レジスタ・モードにあるときには一次仮想アドレスとして扱われ、ホーム空間モードにあるときにはホーム仮想アドレスとして扱われる。カレント・プログラム・ステータス・ワード内の命令アドレス、及びEXECUTEのターゲット・アドレスは、命令アドレスである。]
[0064] 実効アドレス
ある状況においては、「実効アドレス」という用語を用いることが便利である。実効アドレスは、動的アドレス変換又はプリフィックス付加によるいずれかの変形が行われる前に存在するアドレスである。実効アドレスは、レジスタ内において直接指定されることもあり、又はアドレス算術演算の結果であることもある。アドレス算術演算は、ベースと変位との加算、又はベースとインデックスと変位との加算である。]
[0065] プリフィックス付加
プリフィックス付加は、実アドレスの0−8191の範囲を、CPUごとに絶対ストレージ内の異なるブロックに割り当て、それにより、特に割り込みの処理の際に、主ストレージを共有する1つより多くのCPUが最小限の干渉で同時に動作することを可能にする能力を提供する。プリフィックス付加により、0−8191の範囲の実アドレスを、そのCPUのためのプリフィックス・レジスタのビット位置0−50における値によって識別される8Kバイトの絶対アドレス・ブロック(プリフィックス領域)に1対1で対応させ、且つ、プリフィックス・レジスタ内のその値によって識別される実アドレス・ブロックを、絶対アドレス0−8191に1対1で対応させる。残りの実アドレスは、対応する絶対アドレスと同一である。この変形により、各CPUは、最初の8Kバイトと、他のCPUのプリフィックス・レジスタによって指示される位置とを含む、主ストレージの全てにアクセスするこが可能になる。]
[0066] プリフィックスは、プリフィックス・レジスタのビット位置0−50に含まれる51ビット量である。一実施形態において、プリフィックス・レジスタは、以下のフォーマットを有する。]
[0067] プリフィックス付加が適用された場合、実アドレスは、実アドレスのビット0−50に応じて、以下の規則のうちの1つを用いることによって絶対アドレスに変形される。即ち、
アドレスのビット0−50は、全てが0であれば、プリフィックスのビット0−50で置き換えられる。
アドレスのビット0−50は、プリフィックスのビット0−50と等しければ、0で置き換えられる。
アドレスのビット0−50は、0でないものがあり、且つプリフィックスのビット0−50と等しくなければ、変更されないままである。]
[0068] ストレージに提示されたアドレスのみがプリフィックス付加によって変換される。アドレスのソースの内容は変更されないままである。]
[0069] 実アドレスと絶対アドレスとは、プリフィックス・レジスタが全て0を含み、従って実アドレスと対応する絶対アドレスとが同一である場合でさえ、区別される。]
[0070] 図15は、実アドレスと絶対アドレスとの間の関係を示す。] 図15
[0071] アドレス空間は、整数番号の連続シーケンス(仮想アドレス)であり、各番号をストレージ内のバイト位置に関連付けることを可能にする特定の変形パラメータを伴う。シーケンスは、0から開始して左から右へと進む。]
[0072] 仮想アドレスは、CPUによって主ストレージにアクセスするために用いられる場合、最初に、動的アドレス変換(DAT)によって実アドレス又は絶対アドレスに変換される。実アドレスに対してさらにプリフィックス付加を行って、絶対アドレスを形成することができる。DATは、変形パラメータとして、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、及びページ・テーブルを用いることができる。特定のアドレス空間のための最も高位のレベルのテーブルの指示(基点及び長さ)はアドレス空間制御要素(ASCE)と呼ばれ、これは、DATによる使用のために制御レジスタ内に見出されるか、又はアクセス・レジスタによって指定された通りのものである。あるいは、アドレス空間のためのASCEが実空間指示の場合もあり、これは、DATが、いかなるテーブルも用いることなく単に仮想アドレスを実アドレスとして扱うことで仮想アドレスを変換するということを示す。]
[0073] DATは、異なる時点で、異なる制御レジスタ内のASCEか、又はアクセス・レジスタによって指定されたASCEを用いる。選択は、カレント・プログラム・ステータス・ワードにおいて指定される変換モードによって決定される。一次空間モード、二次空間モード、アクセス・レジスタ・モード、及びホーム空間モードの4つの変換モードが利用可能である。変換モードに応じて、異なるアドレス空間をアドレス指定することが可能である。]
[0074] CPUが一次空間モード又は二次空間モードにある場合にはいつでも、CPUは、2つのアドレス空間、即ち一次アドレス空間及び二次アドレス空間に属する仮想アドレスを変換することができる。CPUがアクセス・レジスタ・モードにある場合にはいつでも、CPUは、最大で16個のアドレス空間、即ち、一次アドレス空間及び最大で15個のAR指定アドレス空間の仮想アドレスを変換することができる。CPUがホーム空間モードにある場合にはいつでも、CPUは、ホーム・アドレス空間の仮想アドレスを変換することができる。]
[0075] 一次アドレス空間は、一次アドレス空間制御要素(PASCE)によって変換される一次仮想アドレスから成るので、それ自体として識別される。同様に、二次アドレス空間は、二次アドレス空間制御要素(SASCE)によって変換される二次仮想アドレスから成る。AR指定アドレス空間は、アクセス・レジスタ指定アドレス空間制御要素(AR指定ASCE)によって変換されるAR指定仮想アドレスから成り、ホーム・アドレス空間は、ホーム・アドレス空間制御要素(HASCE)によって変換されるホーム仮想アドレスから成る。一次ASCE及び二次ASCEは、それぞれ制御レジスタ1及び7の中にある。AR指定ASCEは、制御レジスタ1及び7の中にある場合もあり、又は、ASN第2テーブル・エントリと呼ばれるテーブル・エントリの中にある場合もある。HASCEは、制御レジスタ13の中にある。]
[0076] 動的アドレス変換
動的アドレス変換は、仮想アドレスを(例えば、ストレージ参照中に)対応するメイン・メモリ・アドレス(本実施形態においては実アドレス又は絶対アドレス)に変換するプロセスである。仮想アドレスは、一次仮想アドレス、二次仮想アドレス、アクセス・レジスタ指定仮想アドレス、又はホーム仮想アドレスとすることができる。これらのアドレスは、それぞれ、PASCE、SASCE、AR指定ASCE、又はHASCEによって変換される。適切なASCEを選択した後の変換プロセスは、4つのタイプの仮想アドレスの全てについて同一である。]
[0077] アドレス指定変換モード
実効アドレスは、動的アドレス変換又はプリフィックス付加によるいずれかの変形が行われる前に存在するアドレス(仮想アドレス)である。動的アドレス変換を制御するプログラム・ステータス・ワード内の3つのビットは、DATモード・ビットであるビット5と、アドレス空間制御ビットであるビット16及び17である。DATモード・ビットが0である場合、DATはオフであり、CPUは実モードにある。DATモード・ビットが1の場合、DATはオンであり、CPUはアドレス空間制御ビットによって指示される変換モードにある。即ち、二進数字00は一次空間モードを指示し、二進数字01はアクセス・レジスタ・モードを指示し、二進数字10は二次空間モードを指示し、二進数字11はホーム空間モードを指示する。種々のモードを、各モードにおけるアドレスの取り扱いと共に以下に示す。]
[0078] プログラム・ステータス・ワードは128ビット・ワードであり、これは、一部が、アドレス指定モードを示す2ビットを与える。一実施形態において、ビット31は拡張アドレス指定モード(EA)ビットであり、ビット32はベース・アドレス指定モード(BA)ビットである。これらの2つのビットは、アドレスのサイズを示す。これらの2つのビットの各々の状態は、二進数(1又は0)である。EAビットが0であり、且つBAビットが0であるならば、24ビット・アドレス指定が示される。24ビット・アドレス指定が示される場合、64ビット・ワード(64ビット・エンティティは一般に倍長語と呼ばれる)のビット40−63が、アドレスが配置される位置である。命令アドレスが128ビット・エンティティ(4倍長語)の2番目の64ビットを占める場合、プログラム・ステータス・ワードにおけるビット位置は以下の通りである。24ビット・モードでは、命令アドレスは、プログラム・ステータス・ワードのビット104−127に置かれる。31ビット・モードでは、命令アドレスは、プログラム・ステータス・ワードのビット97−127に置かれる。64ビット・モードでは、命令アドレスは、プログラム・ステータス・ワードのビット64−127に置かれる。EAビットが0であり、且つBAビットが1であるならば、31ビット・アドレス指定が示される。適切な64ビット・ワードは、ビット位置33−63に配置された31ビット・アドレスを含む。EAビットが1であり、且つBAビットが1であるならば、64ビット・ワードのビット0−63、即ち64ビット全体がアドレスを含む。そうでない場合には、例外条件が示される。一旦、アドレス指定モードが取得されると、ASCEを決定する必要がある。]
[0079] アドレス空間制御要素(ASCE)
ここで、プログラム・ステータス・ワードを用いて仮想アドレスの動的アドレス変換のための実効アドレス空間制御要素(ASCE)を決定する方法の一実施形態を示す、図3を参照する。ASCEは、例えば、2ギガバイト(ギガ=230)のアドレス空間を指定することができる。又は、ASCEは、例えば、4テラバイト(テラ=240)、8ペタバイト(ペタ=250)、又は16エクサバイト(エクサ=260)のアドレス空間を指定することができる。又は、ASCEは、実空間指示を指定することができる。実空間指示は、仮想アドレスを、1つ又は複数のアドレス変換テーブルを参照することなく、ストレージ内で実アドレスとして扱うようにさせる。] 図3
[0080] プログラム・ステータス・ワード300は、変換(T)ビット302及びアドレス空間(AS)ビット304を含む。306において、変換(T)ビットが0であれば、アドレスは実アドレス326である。308において、アドレス空間(AS)が0に等しければ(二進数字00)、この仮想アドレスのための実効ASCEは、一次アドレス空間制御要素(PASCE)310である。312において、アドレス空間(AS)が1に等しければ(二進数字01)、実効ASCEは、アクセス・レジスタ指定アドレス空間制御要素314である。316において、アドレス空間(AS)が2に等しければ(二進数字10)、実効ASCEは、二次アドレス空間制御要素(SASCE)318である。それ以外の場合には、アドレス空間(AS)は3に等しく(二進数字11)、実効ASCEはホーム・アドレス空間制御要素(HASCE)322である。]
[0081] 実効ASCEを選択した後の動的アドレス変換プロセスは、好ましくは、4つのタイプの仮想アドレスの全てについて同一である。]
[0082] セグメント・テーブル指示又は領域テーブル指示は、オペレーティング・システムによって実ストレージ又は絶対ストレージ内に確立されたテーブルによる変換を実行させる。実空間指示は、ストレージ内のテーブルを用いることなく、仮想アドレスを単に実アドレスとして扱わせる。]
[0083] セグメント・テーブル指示又は領域テーブル指示を用いる場合の変換プロセスにおいて、3つのタイプの情報単位、即ち、領域、セグメント、及びページが認識される。領域は、2ギガバイトにわたり、且つ2ギガバイト境界から始まる逐次的な仮想アドレス・ブロックである。セグメントは、1ギガバイトにわたり、且つ1ギガバイト境界から始まる逐次的な仮想アドレス・ブロックである。ページは、4キロバイトにわたり、且つ4キロバイト境界から始まる逐次的な仮想アドレス・ブロックである。]
[0084] 仮想アドレスのフォーマット
仮想アドレスの変換は、実アドレス又は絶対アドレスを取得するために、変換テーブル階層構造の複数の変換テーブルを参照することを伴うことができる。実アドレスに対してさらにプリフィックス付加を行って、絶対アドレスを形成することができる。仮想アドレスは、変換テーブル階層構造の変換テーブル内のエントリに対するインデックスを含む。仮想アドレスは、従って、4つの主要フィールドに分割される。ビット0−32は領域インデックス(RX)と呼ばれ、ビット33−43はセグメント・インデックス(SX)と呼ばれ、ビット44−51はページ・インデックスと呼ばれ、ビット52−63はバイト・インデックス(BX)と呼ばれる。一実施形態において、仮想アドレスは以下のフォーマットを有する。]
[0085] 仮想アドレス空間は、そのASCEによって決定される通りに、1つの領域から成る2ギガバイトの空間とすることができ、又は最大8ギガバイト領域から成る最大で16エクサバイトまでの空間とすることができる。2ギガバイトのアドレス空間に適用される仮想アドレスのRX部分は、全て0でなければならない。そうでない場合には、例外が認識される。仮想アドレスのRX部分は、それ自体が3つのフィールドに分割される。ビット0−10は領域第1インデックス(RFX)と呼ばれ、ビット11−21は領域第2インデックス(RSX)と呼ばれ、ビット22−32は領域第3インデックス(RTX)と呼ばれる。一実施形態において、仮想アドレスのビット0−32は、以下のフォーマットを有する。]
[0086] RTXが最左端の有効部分(significant part)となっている仮想アドレス(42ビット・アドレス)は、4テラバイト(2048領域)をアドレス指定することができ、RSXが最左端の有効部分となっている仮想アドレス(53ビット・アドレス)は、8ペタバイト(4,193,044領域)をアドレス指定することができ、RFXが最左端の有効部分となっている仮想アドレス(64ビット・アドレス)は、16エクサバイト(8,589,934,592領域)をアドレス指定することができる。]
[0087] RXが0である仮想アドレスは、2つの変換テーブル、即ちセグメント・テーブル及びページ・テーブルによって実アドレスに変換することができる。EDATファシリティがイネーブルであれば、変換はセグメント・テーブルのみで完了させることができる。RFXは非0であってもよく、その場合は、領域第1テーブル、領域第2テーブル、及び領域第3テーブルが必要とされる。RFXが0である場合でも、RSXが非0であってもよく、その場合、領域第2テーブル及び領域第3テーブルが必要とされる。RFX及びRSXが0である場合でも、RTXは非0であってもよく、その場合、領域第3テーブルが必要とされる。]
[0088] あるアドレス空間のためのASCEが、そのアドレス空間に対する参照を変換するために必要とされる最も高レベルのテーブル(領域第1テーブルから始まり、下位に向けてセグメント・テーブルまで続く)を指示していない場合、例外が認識される。]
[0089] 仮想アドレスの動的変換
ここで、図3において決定された実効ASCEを用いて、仮想アドレスの変換に用いられる変換テーブル階層構造内の最初の変換テーブルを決定する一実施形態を示す、図4を参照する。] 図3 図4
[0090] 一実施形態において、制御レジスタ1(CR1)はPASCEを含む。制御レジスタ7(CR7)はSASCEを含む。制御レジスタ13(CR13)はHASCEを含み、アクセス・レジスタ変換(ART)プロセスによって導出されるアドレス空間第2テーブル・エントリ(ASTE)はアクセス・レジスタ指定アドレス空間制御要素を含む。実効ASCE400は、これらの位置のうちの1つから選択される。]
[0091] 実効ASCE400の第1の部分は、領域第1テーブル、領域第2テーブル、領域第3テーブル、又はセグメント・テーブルのうちのいずれかを指示する基点アドレスを含んだテーブル基点402を含む。テーブル基点(ビット0...51)に対して12個の二進数字0が付加されると、仮想アドレスの変換に用いられる変換テーブル階層構造の中で最も高位の変換テーブルの64ビットの基点アドレスが形成される。実効ASCE400はさらに、実空間制御(R)ビット404及びDTビット406も含む。実空間制御(R)ビットが0の場合、どの特定の基点アドレスがテーブル基点402であるのかを判定するためにDTがセレクタ408によってデコードされる。DTビットが3(二進数字11)に等しい場合、テーブル基点402は領域第1テーブル410を指示する。DTビットが2(二進数字10)に等しい場合、テーブル基点402は領域第2テーブル412を指示する。DTビットが1(二進数字01)に等しい場合、テーブル基点402は領域第3テーブル414指示する。そうではなくて、DTビットが0(二進数字00)に等しい場合、テーブル基点402はセグメント・テーブル416を指示する。]
[0092] 領域第1テーブル、領域第2テーブル、又は領域第3テーブルは、単に領域テーブルと呼ばれることもある。同様に、領域第1テーブル指示、領域第2テーブル指示、又は領域第3テーブル指示は、領域テーブル指示と呼ばれることもある。領域テーブル、セグメント・テーブル、及びページ・テーブルは、実ストレージの現在の割り当てを反映する。ページは、仮想ストレージの割り当てに対して用いられる用語である。実ストレージは固定ブロック単位で割り振られる。ページは、逐次的な仮想アドレスの組に対して割り当てられた場合でさえも、実ストレージ内で隣接している必要はない。]
[0093] 変換に用いられるASCEが領域第1テーブル指示である場合には、変換プロセスは、例えば、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、及び随意にページ・テーブルを用いたマルチ・レベル・ルックアップから成る。これらのテーブルは、実ストレージ又は絶対ストレージ内に存在する。ASCEが、領域第2テーブル指示、領域第3テーブル指示、又はセグメント・テーブル指示である場合、指示されたレベルより高位のレベルのテーブルにおけるルックアップは省かれ、より高位レベルのテーブル自体が省かれる。]
[0094] ここで、変換テーブル階層構造を用いた仮想アドレスの動的アドレス変換の一実施形態を示す、図5を参照する。] 図5
[0095] 図4の実効ASCE400は、指示タイプ(DT)ビット406を含む。ASCEの実空間制御(R)ビット404が0の場合、テーブル基点402がどの基点アドレスを指示するのかを判定するために、DTビットはセレクタ408によってデコードされる。実空間制御(R)ビットが1の場合、動的アドレス変換は、図6のノードD564において示されるようにして行われる。] 図4 図6
[0096] セレクタ408において、DTビットが3(二進数字11)に等しい場合、変換テーブル階層構造において指示される最初のテーブルは、領域第1テーブルである。テーブル基点402に対して、502において、仮想アドレスの領域第1インデックス(RFX)508部分が算術的に加算され、領域第1テーブル内の領域第1テーブル・エントリ506が参照される。テーブル基点(右側に12個の0が付加されたもの、又は4096を乗じたもの)が、インデックスに8を乗じた積(又は右側に3つの0が付加されたインデックス)に対して加算される。領域第1テーブル・エントリは、変換に用いられる変換テーブル階層構造の中で次に下位のテーブルに対する領域第2テーブル基点504を含む。領域第1テーブルの次に下位のテーブルは、領域第2テーブルである。領域第1テーブル・エントリの無効(I)ビットが1に等しい場合には、その領域第1テーブル・エントリは無効であり、変換に用いることはできない。例外条件が示される。]
[0097] セレクタ408において、DTビットが2(二進数字10)に等しい場合、変換テーブル階層構造において指示される最初のテーブルは、領域第2テーブルである。テーブル基点402に対して、510において、仮想アドレスの領域第2インデックス(RSX)516部分が算術的に加算され、領域第2テーブル内の領域第2テーブル・エントリ514が参照される。テーブル基点(右側に12個の0が付加されたもの、又は4096を乗じた)が、インデックスに8を乗じた積(又は右側に3つの0が付加されたインデックス)に対して加算される。領域第2テーブル・エントリは、変換に用いられる変換テーブル階層構造の中で次に下位のテーブルに対する領域第3テーブル基点512を含む。領域第2テーブルの次に下位のテーブルは、領域第3テーブルである。領域第2テーブル・エントリの無効(I)ビットが1に等しい場合には、その領域第2テーブル・エントリは無効であり、例外条件が示される。]
[0098] セレクタ408において、DTビットが1(二進数字(01)に等しい場合、変換テーブル階層構造において指示される最初のテーブルは、領域第3テーブルである。テーブル基点402に対して、518において、仮想アドレスの領域第3インデックス(RTX)524部分が算術的に加算され、領域第3テーブル内の領域第3テーブル・エントリ522が参照される。テーブル基点(右側に12個の0が付加されたもの、又は4096を乗じたもの)が、インデックスに8を乗じた積(又は、右側に3つの0が付加されたインデックス)に対して加算される。領域第3テーブル・エントリは、変換に用いられる変換テーブル階層構造の中で次に下位のテーブルに対するセグメント・テーブル基点520を含む。領域第3テーブルの次に下位のテーブルは、セグメント・テーブルである。領域第3テーブル・エントリの無効(I)ビットが1に等しい場合には、その領域第3テーブル・エントリは無効であり、例外条件が示される。]
[0099] セレクタ408において、DTビットが0(二進数字(00)に等しい場合、変換テーブル階層構造において指示される最初のテーブルは、セグメント・テーブルである。テーブル基点402に対して、526において、仮想アドレスのセグメント・インデックス(SX)532部分が算術演算的に加算され、セグメント・テーブル内のセグメント・テーブル・エントリ530が参照される。テーブル基点(右側に12個の0が付加されたるか、又は4096を乗じたもの)が、インデックスに8を乗じた積(又は右側に3つの0が付加されたインデックス)に対して加算される。セグメント・テーブル・エントリは、どちらも528で示される、ページ・テーブルに対する基点アドレスか、又はセグメント・フレーム絶対アドレス(SFAA)を含む。セグメント・テーブル・エントリの無効(I)ビットが1に等しい場合には、そのセグメント・テーブル・エントリは無効であり、例外条件が示される。]
[0100] 538において、セグメント・テーブルのSTEフォーマット制御(FC)ビットが検査される。STEフォーマット制御が1である場合、セグメント・テーブル・エントリ530はセグメント・フレーム絶対アドレス(SFAA)552を含み、動的アドレス変換は図7のノード562を参照して続行する。そうでない場合には、セグメント・テーブルから取得されたセグメント・テーブル・エントリはページ・テーブル基点アドレスを含み、動的アドレス変換は図6のノード560を参照して続行する。] 図6 図7
[0101] ここで、図6を参照する。セグメント・テーブル・エントリ内のSTEフォーマット制御が0である場合、セグメント・テーブルから取得されたセグメント・テーブル・エントリは、変換テーブル階層構造の中で次に下位のテーブルに対する基点アドレスを含む。セグメント・テーブルの次に下位のテーブルは、ページ・テーブルである。図5のセグメント・テーブル・エントリ530から取得されたページ・テーブル基点528に対して、538において、仮想アドレスのページ・インデックス(PX)534部分が算術的に加算され、ページ・テーブル内のページ・テーブル・エントリ542が参照される。ページ・テーブル・エントリは、ページ・フレーム実アドレス(PFRA)546を含む。ページ・フレーム実アドレスの最左端のビットが、548において、仮想アドレスのバイト・インデックス(BX)536部分に連結されると、64ビットの実アドレス550が得られる。64ビット実アドレスに対してさらにプリフィックス付加操作を行って、絶対アドレスを形成することができる。変換された仮想アドレスは、主ストレージ又はメモリ内の所望の4キロバイト(4096バイト)のデータ・ブロックを参照する。] 図5 図6
[0102] 好ましくは、仮想アドレスからメモリ・アドレスへの動的アドレス変換に用いられた情報は、変換ルックアサイド・バッファ・エントリ・タグ内に、その仮想アドレスと関連付けられたメモリのブロックのアドレスと共にストアされる。その後のストレージ・アクセスは、ASCE情報及び仮想アドレス情報を変換ルックアサイド・バッファ・タグと比較することによって、仮想アドレスを迅速に変換することができる。あるタグがその仮想アドレスのものであることが分かれば、関与する各変換テーブルへの時間のかかる逐次的なアクセスを実行する代わりに、そのメモリ・ブロックの変換ルックアサイド・バッファ・アドレスを用いることができる。一実施形態において、ページ・フレーム実アドレス(PFRA)は、例えば、ASCEと仮想アドレスのRX、SX及びPX部分とから成るタグと共に、変換ルックアサイド・バッファ544のエントリ内にストアされる。この仮想アドレスのその後の変換は、これ以降、変換ルックアサイド・バッファ内にストアされた情報から導出される。]
[0103] ここで、図5Cを参照する。セグメント・テーブル・エントリ530内のSTEフォーマット制御が1である場合、セグメント・テーブル・エントリは、セグメント・フレーム絶対アドレス(SFAA)552を含む。セグメント・フレーム絶対アドレスの最左端のビットが、554において、仮想アドレスのページ・インデックス534部分及びバイト・インデックス536部分に連結されると、64ビットの絶対アドレス556が得られる。変換された仮想アドレスは、主ストレージ又はメモリ内の所望の大データ・ブロックを参照する。大データ・ブロックは少なくとも1メガバイト(1,048,576バイト)のサイズである。] 図5C
[0104] 一実施形態において、セグメント・フレーム絶対アドレス(SFAA)は、仮想アドレスのRX及びSX部分と共に、変換ルックアサイド・バッファ544内にストアされる。この仮想アドレスのその後の変換は、これ以降、変換ルックアサイド・バッファ内にストアされた情報から導出される。]
[0105] 変換テーブル・エントリのフォーマット
変換に用いられる変換テーブル階層構造における種々の変換テーブル・エントリの実施形態は以下の通りである。]
[0106] 領域テーブル・エントリ
「領域テーブル・エントリ」という用語は、領域第1テーブル・エントリ、領域第2テーブル・エントリ、又は領域第3テーブル・エントリを意味する。領域第1テーブル、領域第2テーブル、及び領域第3テーブルからフェッチされたエントリは、以下のフォーマットを有する。あるエントリを含むテーブルのレベル(第1、第2、又は第3)は、エントリ内のテーブル・タイプ(TT)ビットによって識別される。]
[0107] 一実施形態において、領域第1テーブル・エントリ、領域第2テーブル・エントリ、及び領域第3テーブル・エントリのフォーマットは以下の通りである。]
[0108] 領域第2テーブル基点、領域第3テーブル基点、及びセグメント・テーブル基点:領域第1テーブル・エントリは、領域第2テーブル基点を含む。領域第2テーブル・エントリは、領域第3テーブル基点を含む。領域第3テーブル・エントリは、セグメント・テーブル基点を含む。以下の説明は3つのテーブル基点の各々に対して適用される。エントリのビット0−51は、右に12個の0を付加すると、次に下位レベルのテーブルの開始を指示する64ビットのアドレスを形成する。]
[0109] DAT保護ビット(P):強化型DATが適用される場合には、ビット54は、変換に用いられる後続の各領域テーブル・エントリ、セグメント・テーブル・エントリ、及び、適用可能な場合にはページ・テーブル・エントリの中のDAT保護ビットとOR(論理和)演算されたものとして扱われる。それゆえ、そのビットが1であるときには、DAT保護は、領域全体又は領域テーブル・エントリによって指定される領域に対して適用される。強化型DATファシリティがインストールされていない場合、又はファシリティはインストールされているが強化型DATイネーブルメント制御が0である場合には、領域テーブル・エントリのビット54は無視される。]
[0110] 領域第2テーブル・オフセット、領域第3テーブル・オフセット、及びセグメント・テーブル・オフセット(TF):領域第1テーブル・エントリは、領域第2テーブル・オフセットを含む。領域第2テーブル・エントリは、領域第3テーブル・オフセットを含む。領域第3テーブル・エントリは、セグメント・テーブル・オフセットを含む。以下の説明は、3つのテーブル・オフセットの各々に対して適用される。エントリのビット56及び57は、次に下位レベルのテーブルの中で、テーブルの始めのところで欠落している部分の長さを指定するものであり、即ち、このビットは、次に下位レベルのテーブル内で実際に存在する最初のエントリの位置を指定する。このビットは、欠落部分の長さを4,096バイト単位で指定するので、従って、欠落部分の長さは512エントリの倍数として可変になる。4,096バイト単位で表された欠落部分の長さは、TFの値に等しい。オフセット・フィールドの内容を、長さフィールドであるビット62及び63と組み合わせて用いて、次に下位レベルのテーブルによって変換される仮想アドレスの部分(RSX、RTX、又はSX)がテーブル内に実際に存在するエントリを指示するのかどうかが確立される。]
[0111] 領域無効ビット(I):領域第1テーブル・エントリ又は領域第2テーブル・エントリ内のビット58は、そのエントリに関連付けられた領域の組が利用可能かどうかを制御する。領域第3テーブル・エントリ内のビット58は、エントリに関連付けられた単一の領域が利用可能であるかどうかを制御する。ビット58が0である場合には、アドレス変換は領域テーブル・エントリを用いることによって進行する。ビットが1である場合には、そのエントリを変換に用いることはできない。]
[0112] テーブル・タイプ・ビット(TT):領域第1テーブル・エントリ、領域第2テーブル・エントリ、又は領域第3テーブル・エントリのビット60及び61は、そのエントリを含むテーブルのレベルを以下のように識別する。ビット60及び61は、変換に用いられるASCEであるテーブル指示のタイプ、及び、それまでに用いられたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別しなければならない。そうでない場合には、変換指定例外(translation specification exception)が認識される。以下のテーブルはテーブル・タイプ・ビットを示す。]
[0113] 領域第2テーブル長、領域第3テーブル長、及びセグメント・テーブル長(TL):領域第1テーブル・エントリは、領域第2テーブル長を含む。領域第2テーブル・エントリは、領域第3テーブル長を含む。領域第3テーブル・エントリは、セグメント・テーブル長を含む。以下の説明は、3つのテーブル長の各々に対して適用される。エントリのビット62及び62は、次に下位レベルのテーブルの長さを4,096バイト単位で指定するので、従って、テーブルの長さは512エントリの倍数として可変になる。4,096バイト単位で表された次に下位レベルのテーブルの長さは、TLの値より1大きい。長さフィールドの内容を、オフセット・フィールドであるビット56及び57と組み合わせて用いて、次に下位レベルのテーブルによって変換される仮想アドレスの部分(RSX、RTX、又はSX)がテーブル内に実際に存在するエントリを指示するかどうかを確立する。領域テーブル・エントリの他の全てのビット位置は、可能性のある将来的な拡張のために未使用とされ、0を含むべきである。そうしなければ、プログラムが将来、互換的に動作できなくなるおそれがある。強化型DATが適用される場合、領域テーブル・エントリ内の未使用のビット位置は、そのテーブル・エントリがたとえ無効だとしても、0を含むべきである。]
[0114] セグメント・テーブル・エントリ
強化型DATが適用されない場合、又は強化型DATは適用されるが、STEフォーマット制御、即ちセグメント・テーブル・エントリのビット53が0である場合には、セグメント・テーブルからフェッチされるエントリは、一実施形態において、以下のフォーマットを有する。]
[0115] 強化型DATが適用され、且つSTEフォーマット制御が1である場合には、セグメント・テーブルからフェッチされるエントリは、一実施形態において、以下のフォーマットを有する。]
[0116] セグメント・テーブル・エントリ内の選択されたフィールドは、以下のように割り振られる。
ページ・テーブル基点:強化型DATが適用されない場合、又は強化型DATは適用されるが、STEフォーマット制御、即ちセグメント・テーブル・エントリのビット53が0である場合には、ビット0−52は、右に11個の0を付加すると、ページ・テーブルの開始を示す64ビットのアドレスを形成する。アドレスが実であるか絶対であるかは予測不可能である。]
[0117] セグメント・フレーム絶対アドレス(SFAA):強化型DATが適用され、且つSTEフォーマット制御が1である場合には、エントリのビット0−43は、右に20個の0を付加すると、セグメントの64ビット絶対アドレスを形成する。]
[0118] ACCF妥当性制御(AV):強化型DATが適用され、且つSTEフォーマット制御が1である場合には、ビット47はアクセス制御ビット及びフェッチ保護ビット(ACCF)妥当性制御である。AV制御が0である場合、セグメント・テーブル・エントリのビット48−52は無視される。AV制御が1である場合、ビット48−52は以下で説明されるように用いられる。]
[0119] アクセス制御ビット(ACC):強化型DATが適用され、STEフォーマット制御が1であり、且つ、AV制御が1である場合には、セグメント・テーブル・エントリのビット48−51は、そのアドレスに適用されるいずれのキー制御アクセス・チェックにも用いることができるアクセス制御ビットを含む。]
[0120] フェッチ保護ビット(F):強化型DATが適用され、STEフォーマット制御が1であり、且つ、AV制御が1である場合には、セグメント・テーブル・エントリのビット52は、そのアドレスに適用されるいずれのキー制御アクセス・チェックにも用いることができるフェッチ保護ビットを含む。]
[0121] STEフォーマット制御(FC):強化型DATが適用される場合には、ビット53は以下のように、セグメント・テーブル・エントリのためのフォーマット制御である。即ち、]
[0122] FCビットが0である場合、エントリのビット0−52はページ・テーブル基点を形成し、ビット55は未使用とされる。]
[0123] FCビットが1である場合、エントリのビット0−43はセグメント・フレーム絶対アドレスを形成し、ビット47はACCF妥当性制御であり、ビット48−51はアクセス制御ビットであり、ビット52はフェッチ保護ビットであり、ビット55は変更記録オーバーライドである。強化型DATが適用されない場合には、ビット53は無視される。]
[0124] DAT保護ビット(P):ビット54は、1である場合には、DAT保護がセグメント全体に適用されることを示す。]
[0125] 強化型DATが適用されない場合には、ビット54は、変換に用いられるページ・テーブル・エントリの中のDAT保護ビットと論理和(OR)演算されたものとして扱われる。]
[0126] 強化型DATが適用される場合には、変換に用いられるいずれかの及び全ての領域テーブル・エントリ内のDAT保護ビットは、セグメント・テーブル・エントリ内のDAT保護ビットと論理和演算されたものとして扱われ、STEフォーマット制御が0である場合には、STEの中のDAT保護ビットはさらに、ページ・テーブル・エントリ内のDAT保護ビットと論理和演算されたものとして扱われる。]
[0127] 変更記録オーバーライド(CO):強化型DATが適用され、且つ、STEフォーマット制御が1である場合、セグメント・テーブル・エントリのビット55は、そのセグメントについての変更記録オーバーライドである。強化型DATが適用されない場合、又は、強化型DATは適用されるがSTEフォーマット制御が0である場合には、セグメント・テーブル・エントリのビット55は無視される。]
[0128] セグメント無効ビット(I):ビット58は、そのセグメント・テーブル・エントリに関連付けられたセグメントが利用可能であるかどうかを制御する。]
[0129] このビットが0である場合、アドレス変換はそのセグメント・テーブル・エントリを用いることによって進行する。]
[0130] このビットが1である場合、そのセグメント・テーブル・エントリを変換に用いることができない。]
[0131] 共通セグメント・ビット(C):ビット59は、セグメント・テーブル・エントリの変換ルックアサイド・バッファ・コピーの使用を制御する。強化型DATが適用されない場合、又は、強化型DATは適用されるがフォーマット制御が0である場合には、ビット59は、そのセグメント・テーブル・エントリによって指示されるページ・テーブルの変換ルックアサイド・バッファ・コピーの使用も制御する。]
[0132] 0はプライベート・セグメントを識別し、この場合、セグメント・テーブル・エントリ及びそれが指示するいずれのページ・テーブルも、そのセグメント・テーブル・エントリが存在するセグメント・テーブルを指示するセグメント・テーブル基点との関連でのみ用いることができる。]
[0133] 1は共通セグメントを識別し、この場合、セグメント・テーブル・エントリ及びそれが指示するいずれのページ・テーブルも、異なるセグメント・テーブルが指定されたとしても、引き続き、そのセグメント・インデックスに対応するアドレスを変換するために用いることができる。]
[0134] しかしながら、共通セグメントのための、セグメント・テーブル・エントリ及びいずれかのページ・テーブルの変換ルックアサイド・バッファ・コピーは、変換に用いられるASCEの中のプライベート空間制御であるビット55が1である場合、又は、そのASCEが実空間指示である場合には、使用可能ではない。用いられているASCEの中のプライベート空間制御が1である場合に、セグメント・テーブル・エントリが変換中にストレージからフェッチされたのであれば、その共通セグメント・ビットは0でなければならない。そうでない場合には、変換指定例外が認識される。]
[0135] テーブル・タイプ・ビット(TT):セグメント・テーブル・エントリのビット60及び61は、そのエントリを含むテーブルのレベルを識別するための二進数字00である。領域テーブル・エントリ又はセグメント・テーブル・エントリの中のビット60及び61の可能な全ての値の意味は、以下の通りである。]
[0136] ビット60及び61は、変換に用いられるASCEであるテーブル指示のタイプ、及び、それまでに用いられたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別するものでなければならない。そうでない場合には、変換指定例外が認識される。セグメント・テーブル・エントリの他の全てのビット位置は、可能性のある将来的な拡張のために未使用とされ、0を含むべきである。そうしなければ、プログラムが将来、互換的に動作できなくなるおそれがある。強化型DATが適用される場合、セグメント・テーブル・エントリ内の未使用のビット位置は、そのテーブル・エントリがたとえ無効だとしても、0を含むべきである。]
[0137] ページ・テーブル・エントリ
一実施形態において、ページ・テーブルからフェッチされるエントリは、以下のフォーマットを有する。]
[0138] ページ・テーブル・エントリの選択されたフィールドは、以下のように割り振られる。即ち、
ページ・フレーム実アドレス(PFRA):ビット0−51は、実ストレージのアドレスの最左端のビットを与える。これらのビットの右に仮想アドレスの12ビット・バイトのインデックス・フィールドを連結すると、64ビットの実アドレスが得られる。]
[0139] ページ無効ビット(I):ビット53は、ページ・テーブル・エントリに関連付けられたページが利用可能であるかどうかを制御する。ビットが0である場合、アドレス変換はそのページ・テーブル・エントリを用いることによって進行する。ビットが1である場合、そのページ・テーブル・エントリを変換に用いることはできない。]
[0140] DAT保護ビット(P):ビット54は、そのページでストア・アクセスを行うことができるかどうかを制御する。この保護機構は、キー制御保護及び低いアドレス保護機構に加えてのものである。このビットは、フェッチ・アクセスに対して影響を与えない。このビットが0である場合、以下の追加的制約に従って、そのページへのストアが許可される。即ち、
変換に用いられるセグメント・テーブル・エントリ内のDAT保護ビットが0である。
強化型DATが適用される場合には、変換に用いられる全ての領域テーブル・エントリ内のDAT保護ビットが0である。]
[0141] 他の保護機構
ビットが1である場合、ストアは許可されない。より優先順位の高い例外条件が存在しない場合には、DAT保護ビットが1であるときにストアしようとする試行は、保護例外の認識を発生させる。セグメント・テーブル・エントリ内のDAT保護ビットは、そのページに対してDAT保護が適用されるかどうかを判定するときに、ビット54と論理和演算されたものとして扱われる。強化型DATが適用される場合、変換に用いられるいずれの領域テーブル・エントリ内のDAT保護ビットもまた、DAT保護が適用されるかどうかを判定するときに、ビット54と論理和演算されたものとして扱われる。]
[0142] 変更記録オーバーライド(CO):強化型DATが適用されない場合、ページ・テーブル・エントリのビット55は、0を含んでいなければならない。そうしなければ、アドレス変換のためにそのエントリを用いる命令の実行の一部として、変換指定例外が認識される。強化型DATが適用され、且つ、STEフォーマット制御が0である場合、ページ・テーブル・エントリのビット55は、そのページについての変更記録オーバーライドである。]
[0143] エントリのビット位置52は、0を含んでいなければならない。そうしなければ、アドレス変換のためにそのエントリを用いる命令の実行の一部として、変換指定例外が認識される。ビット56−63は割り当てられず、無視される。]
[0144] 動的変換の別の実施形態
このセクションは、仮想アドレスを用いて主ストレージにアクセスする前に暗黙的に実施されるときの変換プロセスを説明する。]
[0145] 仮想アドレスの変換は、プログラム・ステータス・ワード内のDATモード・ビット及びアドレス空間制御ビットにより制御され、且つ、制御レジスタ1、7、及び13内のASCEにより制御され、そして、アクセス・レジスタによって指定されるように制御される。変換に用いられるASCEが領域第1テーブル指示である場合には、変換は領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、及びページ・テーブルによって実施され、その全てが実ストレージ又は絶対ストレージ内に存在する。ASCEがより下位レベルのタイプのテーブル指示(領域第2テーブル指示、領域第3テーブル指示、又はセグメント・テーブル指示)である場合には、変換は、指示されたレベルから始まるテーブル・レベルのみを用いて実施され、非0であればより高位の1つ又は複数のレベルのテーブルの使用を要求するはずの仮想アドレスのビットは、全て0でなければならずそうでない場合には、ASCEタイプ例外が認識される。ASCEが実空間指示である場合には、仮想アドレスは実アドレスとして扱われ、実ストレージ又は絶対ストレージの内のテーブル・エントリは用いられない。]
[0146] 特定のアドレス変換に用いられるASCEを、実効ASCEと呼ぶ。従って、一次仮想アドレスが変換される場合には、制御レジスタ1の内容が実効ASCEとして用いられる。同様に、二次仮想アドレスの場合には制御レジスタ7の内容が用いられ、AR指定仮想アドレスの場合にはアクセス・レジスタによって指定されたASCEが用いられ、ホーム仮想アドレスの場合には制御レジスタ13の内容が用いられる。]
[0147] 実効ASCEの中の実空間制御が0である場合、ASCEの中の指示タイプはテーブル指示タイプ、即ち、領域第1テーブル、領域第2テーブル、領域第3テーブル、又はセグメント・テーブルを指定する。仮想アドレスの対応する部分(領域第1インデックス、領域第2インデックス、領域第3インデックス、又はセグメント・インデックス)が、指示の中のテーブル長フィールドに対してチェックされ、これを指示内の基点に加算して、指示されたテーブルの中のエントリを選択する。選択されたエントリが、指示内のテーブル長フィールドによって判定してテーブルの外部にある場合、又は選択されたエントリ内のIビットが1である場合は、指示によって指定されたテーブル・レベルに応じて、領域第1変換、領域第2変換、領域第3変換、又はセグメント変換の例外が認識される。選択されたエントリ内のテーブル・タイプ・ビットが予期されたテーブル・レベルを示していない場合には、変換指定例外が認識される。]
[0148] 実効ASCEによって選択されたテーブル・エントリは、用いられるべき次に下位レベルのテーブルを指示する。現在のテーブルが領域第1テーブル、領域第2テーブル、又は領域第3テーブルであれば、仮想アドレスの次の部分(それぞれ、領域第2インデックス、領域第3インデックス、又はセグメント・インデックス)が現在のテーブル・エントリ内のテーブル・オフセット及びテーブル長フィールドに対してチェックされ、これをエントリ内の基点に加算して、次に下位レベルのテーブルの中のエントリを選択する。次のテーブルの中の選択されたエントリが、現在のテーブル・エントリ内のテーブル・オフセット及びテーブル長フィールドによって判定して、そのテーブルの外部にある場合、又は、選択されたエントリ内のIビットが1である場合は、次のテーブルのレベルに応じて、領域第2変換、領域第3変換、又はセグメント変換の例外が認識される。選択されたエントリ内のテーブル・タイプ・ビットが予期されたテーブル・レベルを示していない場合には、変換指定例外が認識される。]
[0149] 逐次的なテーブル・レベルによる仮想アドレスの部分の処理は、セグメント・テーブル・エントリが選択されるまで続く。セグメント・テーブル・エントリは、指定されたセグメントの中の全てのページに適用されるページ保護ビットを含む。]
[0150] 仮想アドレスのページ・インデックス部分を、セグメント・テーブル・エントリ内のページ・テーブル基点に加算して、ページ・テーブル内のエントリを選択する。ページ・テーブル・エントリ内のIビットが1である場合には、ページ変換例外が認識される。ページ・テーブル・エントリは、仮想アドレスの変換を示す実アドレスの最左端のビットを含み、且つ、そのページ・テーブル・エントリによって指定されるページのみに適用されるページ保護ビットを含む。]
[0151] 仮想アドレスのバイト・インデックス・フィールドは、実アドレスの最右端のビット位置として、変更せずに用いられる。]
[0152] 実ストレージ又は絶対ストレージ内の変換テーブルを参照することに関連する遅延を排除するために、テーブルからフェッチされた情報は通常、特別なバッファである変換ルックアサイド・バッファ内にも置かれ、同じテーブル・エントリが関与するその後の変換は、変換ルックアサイド・バッファ内に記録された情報を用いて行うことができる。変換ルックアサイド・バッファは、実空間指示に関係した、仮想と実が等しい(virtual equals real)変換を記録することもできる。]
[0153] 領域テーブル、セグメント・テーブル、又はページ・テーブルからエントリをフェッチする目的で、アドレス変換プロセス中に実ストレージ又は絶対ストレージにアクセスする場合であればいつでも、キー制御保護は適用されない。]
[0154] ASCEによって指示されるテーブルにおけるルックアップ
実効ASCEのDT制御であるビット60−61は、ASCEのテーブル指示タイプ、及び、指示されたテーブルによって変換される仮想アドレスの部分の両方を以下のように指定する。]
[0155] ビット60及び61が二進数字11の値を有する場合、仮想アドレスの領域第1インデックス部分を、ASCEに含まれる領域第1テーブル基点と組み合わせて用いて、領域第1テーブルからエントリを選択する。実ストレージ又は絶対ストレージの中の領域第1テーブル・エントリの64ビット・アドレスは、領域第1テーブル指示のビット0−51の右側に12個の0を付加すること、及び、最右端に3つ、最左端に50個の0が付加された領域第1インデックスを加算することによって得られる。領域第1テーブル・ルックアップ・プロセスの一部として、アドレス指定されたエントリが領域第1テーブル内にあるかどうかを確立するために、仮想アドレスのビット0及び1(領域第1インデックスのビット0及び1である)が、領域第1テーブル指示のテーブル長、即ちビット62及び63に対して比較される。テーブル長フィールドにおける値が仮想アドレスの対応するビット位置における値より小さい場合には、領域第1変換例外が認識される。変換ルックアサイド・バッファ内の領域第1テーブル・エントリの等価物が変換に用いられる場合には、テーブル長に対する比較を省略することができる。領域第1テーブルからフェッチされたエントリは、対応する領域第2テーブルの開始位置を示し、そのオフセット及び長さを指定する。]
[0156] ASCEのビット60及び61が二進数字10の値を有する場合、仮想アドレスの領域第2インデックス部分を、ASCEに含まれる領域第2テーブル基点と組み合わせて用いて、領域第2テーブルからエントリを選択する。仮想アドレスのビット11及び12(領域第2インデックスのビット0及び1である)が、ASCEの中のテーブル長に対して比較される。テーブル長フィールドにおける値が、仮想アドレスの対応するビット位置における値より小さい場合には、領域第2変換例外が認識される。変換ルックアサイド・バッファ内の領域第2テーブル・エントリの等価物が変換に用いられる場合には、テーブル長に対する比較を省略することができる。その他の点では、領域第2テーブル・ルックアップ・プロセスは、領域第1テーブル・ルックアップ・プロセスと同じであり、領域第2テーブルからフェッチされたエントリは、対応する領域第3テーブルの開始位置を示し、そのオフセット及び長さを指定する。]
[0157] ASCEのビット60及び61が二進数字01の値を有する場合、仮想アドレスの領域第3インデックス部分を、ASCEに含まれる領域第3テーブル基点と組み合わせて用いて、領域第3テーブルからエントリを選択する。仮想アドレスのビット22及び23(領域第3インデックスのビット0及び1である)が、ASCEの中のテーブル長に対して比較される。テーブル長フィールドにおける値が、仮想アドレスの対応するビット位置における値より小さい場合には、領域第3変換例外が認識される。その他の点では、領域第3テーブル・ルックアップ・プロセスは領域第1テーブル・ルックアップ・プロセスと同じであり、領域第3テーブル・エントリ内のテーブル・タイプ・ビットをチェックすることを含む。領域第3テーブルからフェッチされたエントリは、対応するセグメント・テーブルの開始位置を示し、そのオフセット及び長さを指定する。]
[0158] ASCEのビット60及び61が二進数字00の値を有する場合、仮想アドレスのセグメント・インデックス部分を、ASCEに含まれるセグメント・テーブル基点と組み合わせて用いて、セグメント・テーブルからエントリを選択する。仮想アドレスのビット33及び34(セグメント・インデックスのビット0及び1である)が、ASCEの中のテーブル長に対して比較される。テーブル長フィールドにおける値が、仮想アドレスの対応するビット位置における値より小さい場合には、セグメント変換例外が認識される。変換ルックアサイド・バッファ内のセグメント・テーブル・エントリの等価物が変換に用いられる場合には、テーブル長に対する比較を省略することができる。その他の点では、セグメント・テーブル・ルックアップ・プロセスは領域第1テーブル・ルックアップ・プロセスと同じであり、セグメント・テーブル・エントリ内のテーブル・タイプ・ビットをチェックすることを含む。処理は以下の通りである。]
[0159] 強化型DATが適用されない場合、又は、強化型DATは適用されるが、STEフォーマット制御が0である場合には、セグメント・テーブルからフェッチされたエントリは、対応するページ・テーブルの開始位置を示し、処理は以下の「ページ・テーブル・ルックアップ」において説明されるように続行する。]
[0160] 強化型DATが適用され、且つ、STEフォーマット制御が1である場合には、セグメント・テーブルからフェッチされたエントリは、セグメント・フレーム絶対アドレスの最左端のビットを含む。変換に用いられるいずれかの領域テーブル・エントリ、又はセグメント・テーブル・エントリのどちらかにおいてDAT保護ビットが1であり、且つ、変換が実施されているストレージ参照がストアであれば、保護例外が認識される。]
[0161] 領域テーブル・エントリによって指示されるテーブルにおけるルックアップ
実効ASCEが領域テーブル指示である場合には、前掲のセクションにおいて説明されたように領域テーブル・エントリが選択される。次いで、選択されたエントリの内容と、仮想アドレスの次のインデックス部分とを用いて、次に下位レベルのテーブルにおけるエントリが選択され、このテーブルは、別の領域テーブルの場合もあり、セグメント・テーブルの場合もある。ASCEによって選択されたテーブル・エントリが領域第1テーブル・エントリである場合には、仮想アドレスの領域第2インデックス部分を領域第1テーブル・エントリに含まれる領域第2テーブル基点と組み合わせて用いて、領域第2テーブルからエントリを選択する。実ストレージ又は絶対ストレージの中の領域第2テーブル・エントリの64ビット・アドレスは、領域第1テーブル・エントリのビット0−51の右側に12個の0を付加すること、及び、最右端に3つ、最左端に50個の0が付加された領域第2インデックスを加算することによって得られる。]
[0162] 領域第2テーブル・エントリ、領域第3テーブル・エントリ、又はセグメント・テーブル・エントリのアドレスを形成する際に、プリフィックス付加が行われる場合には、それは、より高位レベルのテーブル・エントリに含まれるそれぞれのテーブル基点に対してテーブル・インデックスの値を加算する前に適用されるのか、又はテーブル基点とテーブル・インデックス値との加算によって形成されたテーブル・エントリ・アドレスに対して適用されるのかは、予測不可能である。]
[0163] 領域第2テーブル・ルックアップ・プロセスの一部として、仮想アドレスのビット11及び12(領域第2インデックスのビット0及び1である)は、領域第1テーブル・エントリのテーブル・オフセットであるビット56及び57に対して、及び領域第1テーブル・エントリのテーブル長であるビット62及び63に対して比較され、アドレス指定されたエントリが領域第2テーブルの範囲内にあるどうかを確立する。テーブル・オフセット・フィールドにおける値が仮想アドレスの対応するビット位置における値より大きい場合、又はテーブル長フィールドにおける値が仮想アドレスの対応するビット位置における値より小さい場合には、領域第2変換例外が認識される。]
[0164] 領域第2テーブルは、対応する領域第3テーブルの開始位置を示し、そのオフセット及び長さを指定する。]
[0165] ASCEによって選択されたテーブル・エントリが領域第2テーブル・エントリである場合、又は領域第2テーブル・エントリが領域第1テーブル・エントリの内容によって選択されている場合には、仮想アドレスの領域第3インデックス部分を、領域第2テーブル・エントリに含まれる領域第3テーブル基点と組み合わせて用いて、領域第3テーブルからエントリを選択する。仮想アドレスのビット22及び23(領域第3インデックスのビット0及び1である)が、領域第2テーブル・エントリ内のテーブル・オフセット及びテーブル長に対して比較される。テーブル・オフセットがビット22及び23より大きい場合、又はテーブル長がビット22及び23より小さい場合には、領域第3変換例外が認識される。その他の点では、領域第3テーブル・ルックアップ・プロセスは、領域第2テーブル・ルックアップ・プロセスと同一である。領域第3テーブルからフェッチされたエントリは、対応するセグメント・テーブルの開始位置を示し、そのオフセット及び長さを指定する。]
[0166] ASCEによって選択されたテーブル・エントリが領域第3テーブル・エントリである場合、又は領域第3テーブル・エントリが領域第2テーブル・エントリの内容によって選択されている場合には、仮想アドレスのセグメント・インデックス部分を、領域第3テーブル・エントリに含まれるセグメント・テーブル基点と組み合わせて用いて、セグメント・テーブルからエントリを選択する。仮想アドレスのビット33及び34(セグメント・インデックスのビット0及び1である)が、領域第3テーブル・エントリ内のテーブル・オフセット及びテーブル長に対して比較される。テーブル・オフセットがビット33及び34より大きい場合、又はテーブル長がビット33及び34より小さい場合には、セグメント変換例外が認識される。変換指定例外は、(1)ASCEの中のプライベート空間制御であるビット55が1であり、且つ(2)セグメント・テーブルからフェッチされたエントリ内の共通セグメント・ビットであるビット59が1である場合に、認識される。その他の点では、セグメント・テーブル・ルックアップ・プロセスは、領域第2テーブル・ルックアップ・プロセスと同一である。処理は以下の通りである。]
[0167] 強化型DATが適用されない場合、又は、強化型DATは適用されるがSTEフォーマット制御が0である場合には、セグメント・テーブルからフェッチされたエントリは、対応するページ・テーブルの開始位置を示し、処理は後述の「ページ・テーブル・ルックアップ」において説明されるように続行する。]
[0168] 強化型DATが適用され、且つ、STEフォーマット制御が1である場合には、セグメント・テーブルからフェッチされたエントリは、セグメント・フレーム絶対アドレスの最左端ビットを含む。変換に用いられるいずれかの領域テーブル・エントリ、又はセグメント・テーブル・エントリのどちらかにおいて、DAT保護ビットが1であり、且つ、変換が実施されている対象のストレージ参照がストアであれば、保護例外が認識される。]
[0169] ページ・テーブルのルックアップ
強化型DATが適用されない場合、又は強化型DATは適用されるがSTEフォーマット制御が0である場合には、仮想アドレスのページ・インデックス部分を、セグメント・テーブル・エントリに含まれるページ・テーブル基点と組み合わせて用いて、ページ・テーブルからエントリを選択する。]
[0170] 実ストレージ又は絶対ストレージ内のページ・テーブル・エントリの64ビット・アドレスは、ページ・テーブル基点の右に11個の0を付加すること、及び、最右端に3つ、最左端に53個の0が付加されたページ・インデックスを加算することによって得られる。ビット位置0のキャリーアウトは、生じることができない。]
[0171] ページ・テーブルからフェッチされたエントリは、そのページの可用性を示し、ページ・フレーム絶対アドレスの最左端ビットを含む。対応するページが利用可能であるかどうかを確立するために、ページ無効ビットであるビット53が検査される。このビットが1である場合、ページ変換例外が認識される。ビット位置52が1を含んでいる場合、変換指定例外が認識される。強化型DATが適用されない場合、又は強化型DATは適用されるがSTEフォーマット制御が0である場合には、ビット位置55が1を含む場合にも変換指定例外が認識される。変換に用いられるセグメント・テーブル・エントリ、ページ・テーブル・エントリ、又は強化型DATが適用される場合に変換中に用いられるいずれかの領域テーブル・エントリのうちのいずれかにおいて、DAT保護ビットが1であり、且つ、変換が実施されている対象のストレージ参照がストアであれば、保護例外が認識される。]
[0172] 実アドレス及び絶対アドレスの形成
実効ASCEが実空間指示である場合には、仮想アドレスのビット0−63は直接、実ストレージ・アドレスとして用いられる。実アドレスに対してさらにプリフィックス付加を行って、絶対アドレスを形成することができる。実効ASCEが実空間指示ではなく、変換プロセスにおいて例外が発生しない場合には、以下の条件が適用される。]
[0173] 強化型DATが適用されない場合、又は強化型DATは適用されるがSTEフォーマット制御が0である場合には、ページ・フレーム実アドレスは、ページ・テーブル・エントリから得られる。ページ・フレーム実アドレスと仮想アドレスのバイト・インデックス部分とを、ページ・フレーム実アドレスが最左端部分を形成するようにして連結させる。その結果が、その仮想アドレスに対応する実ストレージ・アドレスである。実アドレスに対してさらにプリフィックス付加を行って、絶対アドレスを形成することができる。]
[0174] 強化型DATが適用され、且つ、STEフォーマット制御が1である場合には、セグメント・フレーム絶対アドレスと仮想アドレスのページ・インデックス部分及びバイト・インデックス部分とを左から右に連結して、仮想アドレスに対応する絶対アドレスを形成する。]
[0175] 変換中の例外の認識
無効アドレス及び無効フォーマットは、変換プロセス中に認識される例外を発生することがある。テーブル・エントリに含まれる情報が変換のために用いられ、それが正しくない正しくないことが見いだされた場合に、例外が認識される。]
[0176] ここで、動的アドレス変換の一実施形態の流れ図をセグメント・テーブル・エントリからフォーマット制御フィールドを取得する時点まで示す、図8を参照する。] 図8
[0177] 602において、変換する仮想アドレスが取得される。604において、仮想アドレスの変換に用いられる最も高位の変換テーブルの基点アドレスが取得される。変換に用いられる最初の変換テーブルの基点アドレスは、ADCE及びDTビットに依存する。606において、仮想アドレスの一部を用いて、変換テーブル内の適切なテーブル・エントリを参照する。608において、変換テーブルからフェッチされたエントリがセグメント・テーブル・エントリでない場合には、変換テーブル階層構造の中のセグメント・テーブルはまだ参照されていない。この場合、610において、変換テーブル階層構造内の次に低位の変換テーブルの基点アドレスが、テーブル・エントリから取得される。仮想アドレスの適切な部分を用いて、変換に用いられる次に低位のテーブル内の対応するテーブル・エントリを参照する。]
[0178] 例えば、変換に用いられる最初の変換テーブルの基点アドレスが領域第1テーブルであれば、仮想アドレスのRFX部分を用いて、領域第1テーブル内の領域第1テーブル・エントリを参照する。テーブル基点アドレスが領域第2テーブルに対するものであれば、仮想アドレスのRSX部分を用いて、領域第2テーブル内の領域第2テーブル・エントリを参照する。テーブル基点アドレスが領域第3テーブルに対するものであれば、仮想アドレスのRTX部分を用いて、領域第3テーブル内の領域第3テーブル・エントリを参照する。テーブル基点アドレスがセグメント・テーブルに対するものであれば、仮想アドレスのSX部分を用いて、セグメント・テーブル内のセグメント・テーブル・エントリを参照するセグメント・テーブル・エントリがフェッチされるまで、逐次的なテーブルが参照される。]
[0179] 一旦セグメント・テーブル・エントリがフェッチされると、612において、セグメント・テーブル・エントリ(STE)フォーマット制御ビットが検査され、この特定の仮想アドレスに対してフォーマット制御がイネーブルであるかどうかを判定する。STEフォーマット制御が0であれば、動的アドレス変換はノード614に関して行われる。STEフォーマット制御が1であれば、動的アドレス変換はノード616に関して行われる。]
[0180] 動的アドレス変換(STEフォーマット制御が0)
ここで、STEフォーマット制御が0である場合の図8のノード614からの流れ図の続きを示す、図9を参照する。] 図8 図9
[0181] 710において、セグメント・テーブル・エントリから、ページ・テーブルの基点アドレスが取得される。712において、仮想アドレスのPX部分を用いて、ページ・テーブル内のページ・エントリを参照する。714において、ページ・テーブル・エントリから、ページ・フレーム実アドレス(PFRA)が取得される。無効(I)ビットがページ・テーブル・エントリから取得される。716において、無効(I)ビットが1である場合、このページ・テーブル・エントリは無効であるものとしてマークされているので、718において、このページ・テーブル・エントリを用いた仮想アドレスの変換を続けることはできない。このページ・テーブル・エントリを用いた仮想アドレスのそれ以上の変換は、停止する(722)。716において、無効(I)ビットが0である場合、720において、ページ・フレーム実アドレス(PFRA)を仮想アドレスのBX部分と組み合わせて、実アドレスを生成する。実アドレスに対してさらにプリフィックス付加操作を行って、絶対アドレスを形成することができる。724において、実アドレスを用いて、変換された仮想アドレスによってアドレス指定されたデータ・ブロックにアクセスする。]
[0182] 動的アドレス変換(STEフォーマット制御が1)
ここで、図8のノード616からの流れ図の続きを示す、図10を参照する。] 図10 図8
[0183] 810において、セグメント・フレーム絶対アドレス(SFAA)が、セグメント・テーブル・エントリの一部から取得される。無効(I)ビットがセグメント・テーブル・エントリから取得される。812において、無効(I)ビットが1である場合、セグメント・テーブル・エントリは無効であるものとしてマークされているので、814において、このセグメント・テーブル・エントリを用いた仮想アドレスのそれ以上の変換を続けることはできない。一実施形態において、変換を要求するプログラム・エンティティに対して、例外コードが戻される。このセグメント・テーブル・エントリを用いた仮想アドレスのそれ以上の変換は、停止する(818)。]
[0184] 812において、無効(I)ビットが0である場合、816において、セグメント・フレーム絶対アドレス(SFAA)を仮想アドレスのPX部分及びBX部分と組み合わせて、主ストレージ又はメモリ内の所望の大データ・ブロックに対する絶対アドレスを生成する。820において、変換された仮想アドレスによってアドレス指定される所望の大データ・ブロックにアクセスする。]
[0185] 各テーブル・エントリにおいて、取得されたテーブル・エントリの妥当性を判定するために、無効ビットが検査される。変換された仮想アドレスによってアドレス指定されるデータ・ブロックを保護する他の変換保護機構について、本明細書においてさらに検討する。]
[0186] 別の実施形態において、制限情報が変換テーブル・エントリから取得される。制限情報は、アクセスを仮想アドレス範囲の制限部分に対するものに限定するために用いられる。これ以降は、変換されたアドレスによってアドレス指定される所望の大データ・ブロックに対するアクセスは、アドレス範囲の制限部分に対してのみ許可される。制限情報は、テーブル・オフセット又はテーブル長のどれか1つである。]
[0187] さらに別の実施形態において、仮想アドレスの変換に用いられる情報は、少なくとも1つの変換ルックアサイド・バッファ内にストアされる。その後の仮想アドレスの、主ストレージ内のデータ・ブロックの絶対アドレスへの変換は、それ以降、変換テーブル階層構造ではなく変換ルックアサイド・バッファ由来のストアされた情報を用いて実施される。]
[0188] さらに別の実施形態において、変換がマシン・アーキテクチャに対してネイティブでない場合には、変換をエミュレートするための所定のソフトウェア・ルーチンが識別される。所定のソフトウェア・ルーチンは、複数の命令を含む。所定のソフトウェア・ルーチンが実行される。]
[0189] アドレス指定されたデータ・ブロックの保護
本明細書で説明されるように、仮想アドレスが強化型DATファシリティを用いて変換されると、変換された仮想アドレスによってアドレス指定される主ストレージ又はメモリ内の所望のデータ・ブロックに対して、付加的な保護機構を適用することができる。]
[0190] DAT保護
DAT保護機能は、仮想ストレージへのアクセスを、各ページ・テーブル・エントリ及びセグメント・テーブル・エントリ内のDAT保護ビット、及び、強化型DATファシリティがインストールされている場合には各領域テーブル・エントリ内のDAT保護ビットを用いることによって、制御する。これは不正なストアに対する保護を与える。]
[0191] ページ・テーブル・エントリのDAT保護ビット(ビット54)は、対応する4キロバイトのページへのストアが許可されるかどうかを制御する。ビットが0である場合にはフェッチ及びストアの両方が許可され、ビットが1である場合にはフェッチのみが許可される。保護されたページへのストアが試行された場合、ページの内容は変更されず、操作単位(unit of operation)又は命令の実行が抑制され、保護のためのプログラム割り込みが発生する。]
[0192] セグメント・テーブル・エントリのDAT保護ビット(ビット54)は、対応する1メガバイトのセグメントへのストアが許可されるかどうかを以下のように制御する。]
[0193] 強化型DATが適用されない場合、又は強化型DATが適用され、且つSTEフォーマット制御が0である場合には、セグメント・テーブル・エントリのDAT保護ビットは、そのセグメント・テーブル・エントリによって指示されるページ・テーブル内の各エントリのDAT保護ビット位置内へと論理和演算されたものとして扱われる。よって、セグメント・テーブル・エントリのDAT保護ビットが1である場合、その効果は、あたかも指示されたページ・テーブルの中の各エントリ内のDAT保護ビットが1であるかのようなものである。]
[0194] 強化型DATが適用され、且つSTEフォーマット制御が1である場合には、セグメント・テーブル・エントリのDAT保護ビットは、対応する1メガバイトのセグメントへのストアが許可されるどうかを制御する。ビットが0である場合にはフェッチ及びストアの両方が許可され、ビットが1である場合にはフェッチのみが許可される。保護されたセグメントへストアが試行された場合、セグメントの内容は変更されず、操作単位又は命令の実行が抑制され、保護のためのプログラム割り込みが発生する。]
[0195] 強化型DATが適用される場合、領域テーブル・エントリのDAT保護ビットは、対応する領域へのストアが許可されるかどうかを制御する。領域テーブル・エントリ内のDAT保護ビットは、変換に用いられるいずれかの後続の領域テーブル・エントリ及びセグメント・テーブル・エントリのDAT保護ビット位置内へと論理和演算されたものとして扱われる。STEフォーマット制御が0である場合、DAT保護ビットは、さらにページ・テーブル・エントリまで伝搬される。]
[0196] DAT保護は、仮想アドレスを用いる全てのストア・タイプ参照に適用される。]
[0197] ここで、変換に用いられるセグメント・テーブル・エントリからDAT保護ビットを得る一実施形態の流れ図を示す、図11を参照する。] 図11
[0198] 902において、変換される仮想アドレスが取得される。904において、仮想アドレスの変換に用いられる最初の変換テーブルの基点が取得される。906において、前述された手法で、仮想アドレスの一部を用いて変換テーブル内のエントリを参照する。908において、実アドレス又は絶対アドレスが、取得されたセグメント・フレーム絶対アドレス(SFAA)又はページ・フレーム実アドレス(PFRA)から生成される。]
[0199] 910において、DAT保護(P)ビットが、仮想アドレスの変換に用いられた変換テーブルの各エントリから取得される。DAT保護の実効レベルは、変換に用いられた各テーブル・エントリから取得される複数のPビットの論理和であることを理解すべきである。912において、DAT保護ビットが検査され、変換された仮想アドレスによってアドレス指定されたデータ・ブロックがDAT保護されるかどうかを判定する。912において、DAT保護(P)ビットが0である場合、914において、変換された仮想アドレスによってアドレス指定されるデータ・ブロックへのストア動作が許可される。912において、DAT保護(P)ビットが1である場合、916において、変換された仮想アドレスによってアドレス指定されたデータ・ブロックへのストア動作が防止される。あるいは、DAT保護フィールドによって示される保護レベルが、その仮想アドレスを用いる全てのストア・タイプ参照に対して適用される。DAT保護フィールドがイネーブルである場合、変換された仮想アドレスによってアドレス指定された所望のデータ・ブロックへのストアが試行されると、保護例外条件が示される。]
[0200] キー制御保護
キー制御保護がストレージ・アクセスに適用される場合、ストアは、ストレージ・キーがストレージ・アクセス要求に関連付けられたアクセス・キーと一致する場合にのみ許可され、フェッチは、キーが一致する場合、又はストレージ・キーのフェッチ保護ビットが0である場合に許可される。ストレージ・キーの4つのアクセス制御ビットがアクセス・キーに等しい場合、又はアクセス・キーが0である場合に、キーが一致したと言う。保護アクションは、以下のように要約される。]
[0201] ストレージへのアクセスがCPUによって開始され、且つキー制御保護が適用される場合には、PSWキーがアクセス・キーであるが、但し、MOVETO SECONDARY及びMOVE WITH DESTINATIONKEYの第1オペランド、MOVE TO PRIMARY、MOVE WITH KEY、及びMOVE WITH SOURCE KEYの第2オペランド、並びに第MOVE PAGEの1オペランド又は第2オペランドのいずれかについては、アクセス・キーは汎用レジスタ内で指定される。PSWキーは、カレント・プログラム・ステータス・ワードの8−11のビット位置を占める。]
[0202] キー制御保護が原因でCPUアクセスが禁止されるとき、命令の実行は停止し、保護例外のためのプログラム割り込みが発生する。しかしながら、操作単位又は命令の実行は抑制されることもある。]
[0203] ストレージ・キー
ストレージ・キーは、構成内で利用可能なストレージの各々の4キロバイト・ブロックに関連付けられる。ストレージ・キーはアドレス指定可能なストレージの一部ではない。一実施形態において、ストレージ・キーは以下のフォーマットを有する。]
[0204] ストレージ・キーの中のビット位置は以下のように割り振られる。
アクセス制御ビット(ACC):参照がキー制御保護を受けているならば、情報がストアされる場合、及びフェッチに対して保護されている位置から情報がフェッチされる場合に、4つのアクセス制御ビットが、4ビットのアクセス・キーと照合される。]
[0205] フェッチ保護ビット(F):参照がキー制御保護を受けているならば、フェッチ保護ビットは、キー制御保護がフェッチ・タイプ参照に適用されるかどうかを制御し、0は、ストア・タイプ参照のみが監視され、どのようなアクセス・キーを有するフェッチも許可されることを示し、1は、キー制御保護がフェッチ及びストアの両方に適用されることを示す。]
[0206] 参照ビット(R):参照ビットは通常、対応するストレージ・ブロック内の位置が情報のストア又はフェッチのいずれかのために参照される都度、1に設定される。]
[0207] 変更ビット(C):変更ビットは、対応するストレージ・ブロック内の位置に情報がストアされる都度、1に設定される。]
[0208] 強化型DATが適用される場合、以下の追加条件が効力をもつ。]
[0209] STEフォーマット制御(変換中に用いられるセグメント・テーブル・エントリのビット53であるFC)が0である場合、変換中に用いられるページ・テーブル・エントリのビット55は、そのページのための変更記録オーバーライド(CO)である。ページ・テーブル・エントリ内のCOビットが1である場合、そのページに対するいずれのストア動作についても変更記録は予測不可能である。]
[0210] セグメント・テーブル・エントリの中のフォーマット制御ビット(CO)が1である場合、以下が適用される。]
[0211] セグメント・テーブル・エントリのビット位置47は、ACCF妥当性制御を含む。ACCF妥当性制御は、STEの中のアクセス制御ビット及びフェッチ保護ビットの妥当性を決定する。ACCF妥当性制御が0である場合、キー制御保護は、そのアドレスに対応する4Kバイト・ブロックのためのストレージ・キーの中のアクセス制御ビット及びフェッチ保護ビットを用いる。]
[0212] ACCF妥当性制御が1である場合、セグメント・テーブル・エントリのビット位置48−52は、そのセグメントについてのアクセス制御ビット及びフェッチ保護ビットを含む。ストレージ・オペランドに対するアクセス可能性を判定するときに、STEのビット48−52、又は、セグメントを構成する4Kバイト・ブロックのための個々のストレージ・キーのビット0−4のどちらが検査されるかは、予測不可能である。]
[0213] セグメント・テーブル・エントリのビット55は、そのセグメントについての変更記録オーバーライド(CO)である。セグメント・テーブル・エントリ内のCOビットが1である場合、そのセグメントに対するいずれかのストア動作について変更記録が設定されるかどうかは予測不可能である。]
[0214] ストレージ・キー・アクセス
ストレージ・キーへの参照は、以下のように取り扱われる。]
[0215] ストレージの参照が行われ、且つキー制御保護が参照に適用される場合には常に、そのストレージ位置に関連付けられた4つのアクセス制御ビット及びフェッチ保護ビットが同時に、且つストレージ位置に対する参照と同時に、検査される。(1)強化型DATが適用されない場合、(2)強化型DATは適用されるが、STEフォーマット制御が0であるセグメント・テーブル・エントリによってストレージがアクセスされる場合、又は(3)強化型DATが適用され、STEフォーマット制御が1であるが、ACCF妥当性制御が0であるセグメント・テーブル・エントリによってストレージがアクセスされる場合、アクセス制御ビット及びフェッチ保護ビットは、4Kバイト・ブロックのためのストレージ・キーのビット0−4に存在する。強化型DATが適用され、STEフォーマット制御及びACCF妥当性制御の両方が1であるセグメント・テーブル・エントリによってストレージがアクセスされる場合、ストレージ・キーのビット0−4又はセグメント・テーブル・エントリのビット48−52のどちらがアクセス制御ビット及びフェッチ保護ビットを与えるかは予測不可能である。さらに、セグメント・テーブル・エントリがアクセス制御ビット及びフェッチ保護ビットを与える場合には、変換ルックアサイド・バッファ由来のバッファされたコピーを用いることができる。]
[0216] 強化型DATが適用され、且つ、(a)STEフォーマット制御が0であり、且つ、DATによって用いられるページ・テーブル・エントリ内の変更記録オーバーライドが1であるか、又は(b)STEフォーマット制御が1であり、且つ、DATによって用いられるセグメント・テーブル・エントリ内の変更記録オーバーライドが1であるかのいずれかの場合、CPUがストア動作を実施するときに変更ビットを設定するかどうかは予測不可能である。変更記録オーバーライドは、PTE又はSTEの変換ルックアサイド・バッファ・コピーの中にバッファリングすることができる。]
[0217] 条件付きSSKE特徴がインストールされていない場合、SETSTORAGE KEY EXTENDED命令によって、ストレージ・キーの中の7つのビットの全てが同時に設定される。条件付きSSKEがインストールされている場合、SET STORAGE KEY EXTENDED命令を用いて、プログラム指定基準に基づいてストレージ・キーの全て又は一部を設定することができる。]
[0218] INSERT STORAGEKEY EXTENDED命令は、4Kバイト・ブロックのためのストレージ・キーのビット0−6の一貫したイメージを提供する。同様に、INSERT VIRTUAL STORAGE KEY命令及びTEST PROTECTION命令は、アクセス制御ビット及びフェッチ保護ビットの一貫したイメージを提供する。]
[0219] RESET REFERENCE BIT EXTENDED命令は、参照ビットのみを修正する。ストレージ・キーの他の全てのビットは変更されないままである。条件コードを設定するために、参照ビット及び変更ビットが同時に検査される。]
[0220] 参照ビットによって提供される参照の記録は、必ずしも正確でない。しかし、大部分の状況において、参照記録は、関連するストレージ参照とほぼ一致する。変更ビットを、ストアが発生しなかった場合に設定することができる。]
[0221] 他のCPUによって観察される際に、ストレージ・キーを明示的に操作する命令(INSERT STORAGEKEY EXTENDED、INSERT VIRTUAL STORAGE KEY、RESET REFERECE BIT EXTENDED、及びSETSTORAGE KEY EXTENDED)に起因するストレージ・キー・フェッチ及びストアは、あたかもストレージ・キー・アクセス自体がそれぞれストレージ・オペランド・フェッチ及びストアであるかのように、それ自体の中で、及びストレージ・オペランド参照の中で順序付けられる。]
[0222] アクセス制御及びフェッチ保護(ACC/F)
主ストレージ又はメモリ内のデータ・ブロックは、セグメント・テーブル・エントリ内に与えられたアクセス制御ビット及びフェッチ保護ビットによって、さらに保護することができる。]
[0223] アクセス妥当性(AV)及びアクセス制御(ACC)
ここで、変換された仮想アドレスによってアドレス指定される所望のデータ・ブロックに適用されるアクセス制御保護を判定する流れ図の一実施形態を示す、図12を参照する。] 図12
[0224] 動的アドレス変換は、図8においてノード616のところまで説明されたように、変換に用いられるセグメント・テーブルからセグメント・テーブル・エントリがフェッチされた時点まで進行する。アドレス変換は、図10においてノード822のところまで説明されたように、ストレージ又はメモリ内の所望のデータ・ブロックに対する絶対アドレスが取得されたところまで続行する。図12のフローはノード822から開始する。] 図10 図12 図8
[0225] 1002において、アクセス妥当性(AV)フィールドがセグメント・テーブル・エントリから取得される。1004において、セグメント・テーブル・エントリ内のアクセス妥当性がイネーブルである(AV=1)かどうかの判定が行われる。アクセス妥当性フィールドが0であれば、セグメント・テーブル・エントリ内のアクセス制御(ACC)フィールドは有効ではない。1006において、アクセス制御(ACC)フィールドのビットは無視される。アクセス妥当性フィールドかイネーブルであれば、アクセス制御フィールドは有効である。1008において、アクセス制御(ACC)フィールドのビットがセグメント・テーブル・エントリから取得される。1010において、セグメント・テーブル・エントリ内のACCフィールドによって示されるアクセス制御保護レベルが、変換された仮想アドレスによってアドレス指定される所望のデータ・ブロックに適用される。]
[0226] 別の実施形態において、所望のデータ・ブロックへのストア動作は、アクセス制御フィールドが、プログラム・ステータス・ワード又は実行中のプログラム命令のオペランドといったプログラム・エンティティによって与えられるアクセス・キーに一致した場合にのみ、許可される。所望のデータ・ブロックにおいてストアが試行され、且つアクセス制御フィールドがアクセス・キーに一致しなければ、保護例外が示されることが好ましい。]
[0227] さらに別の実施形態において、アクセス妥当性フィールドがイネーブルである場合、所望のメモリ・ブロックにおいてフェッチ動作又はストア動作が試行され、且つセグメント・アクセス制御フィールドがプログラム・アクセス制御フィールドに一致しなければ、保護例外が示される。]
[0228] アクセス妥当性(AV)及びフェッチ保護(F)
ここで、変換された仮想アドレスによってアドレス指定される所望のデータ・ブロックに適用されるフェッチ保護を判定する流れ図の一実施形態を示す、図13を参照する。] 図13
[0229] 動的アドレス変換は、図8においてノード616のところまで説明されたように、変換に用いられるセグメント・テーブルからセグメント・テーブル・エントリがフェッチされた時点まで進行する。アドレス変換は、図10においてノード822のところまで説明されたように、ストレージ又はメモリ内の所望のデータ・ブロックに対する絶対アドレスが取得されたところまで続行する。図13のフローはノード822から開始する。] 図10 図13 図8
[0230] 1102において、アクセス妥当性(AV)フィールドがセグメント・テーブル・エントリから取得される。1104において、セグメント・テーブル・エントリ内のアクセス妥当性がイネーブルである(AV=1)かどうかの判定が行われる。1104において、アクセス妥当性フィールドが0であれば、1106において、フェッチ保護ビットは無視される。1104において、アクセス妥当性フィールドかイネーブルであれば、1108において、フェッチ保護ビットがセグメント・テーブル・エントリから取得される。1110において、セグメント・テーブル・エントリ内のFフィールドによって示されるフェッチ保護レベルが、変換された仮想アドレスによってアドレス指定される所望のデータ・ブロックに適用される。変換された仮想アドレスによってアドレス指定されるデータ・ブロックからのフェッチ動作は、フェッチ保護フィールドがアクセス・キーに一致した場合にのみ、許可される。アクセス・キーは、プログラム・ステータス・ワード又は実行中のプログラム命令のオペランドによって与えられる。所望のデータ・ブロックからのフェッチ動作は、フェッチ保護フィールドがディスエーブルである場合、又はフェッチ保護フィールドがイネーブルであり、且つ仮想アドレスに関連付けられたアクセス制御フィールドがアクセス・キーに等しい場合にのみ、許可される。アクセス・キーが0であれば、所望のデータ・ブロックからのフェッチが許可される。]
[0231] さらに別の実施形態において、プログラム・アクセス・キーが0であれば、所望のメモリ・ブロックへのストア動作及び所望のメモリ・ブロックからのフェッチ動作が許可される。]
[0232] さらに別の実施形態において、アクセス妥当性フィールド及びフェッチ保護フィールドがイネーブルである場合、所望のメモリ・ブロックからのフェッチ動作が試行され、且つセグメント・アクセス制御フィールドがプログラム・アクセス制御フィールドに一致しないことに応答して、保護例外が示される。]
[0233] SETSTORAGEKEY EXTENDED(SSKE)
ストレージ・キーは、SET STORAGE KEY EXTENDED(SSKE)命令によって設定することができる。一実施形態において、SSKE命令は、以下のフォーマットを有する。]
[0234] 1つ又は複数の4Kバイト・ブロックのためのストレージ・キーが、第1オペランド・レジスタ内の値で置換される。条件付きSSKEファシリティがインストールされている場合には、キー設定動作の特定の機能をバイパスすることができる。条件付きSSKEファシリティがインストールされていない場合、又は条件付きSSKEファシリティがインストールされ、且つM3フィールドのMRビット及びMCビットの両方が0である場合には、汎用レジスタR2の内容によってアドレス指定される4Kバイト・ブロックのためのストレージ・キーが、汎用レジスタR1からのビットで置換される。命令は、条件コードを変更することなく完了する。]
[0235] 条件付きSSKEファシリティがインストールされ、且つMRビット及びMCビットの一方又は両方が1である場合には、汎用レジスタR2の内容によってアドレス指定されるストレージ・キーのアクセス制御ビット、フェッチ保護ビット、及び随意に参照ビット及び変更ビットが、汎用レジスタR1内の対応するビットと比較される。比較されたビットが等しければ、キーに対する変更は行われない。そうでない場合には、キーの選択されたビットが、汎用レジスタR1内の対応するビットによって置換される。いずれかの変更の前のストレージ・キーは、汎用レジスタR1の中に挿入され、結果は条件コードによって示される。]
权利要求:

請求項1
仮想アドレスを主ストレージ内のデータ・ブロックの変換アドレスに変換するために用いられる変換テーブル階層構造を有するコンピュータ・システムにおけるデータを保護するための方法であって、変換すべき前記仮想アドレスを取得するステップと、前記変換テーブル階層構造の変換テーブルの初期基点アドレスを取得するステップであって、前記変換テーブル階層構造がセグメント・テーブルを含むステップと、前記取得された初期基点に基づいて、前記セグメント・テーブルからセグメント・テーブル・エントリを取得するステップであって、前記セグメント・テーブル・エントリがフォーマット制御フィールドを含むように構成されているステップと、強化型DATファシリティがイネーブルであることに応答して、前記セグメント・テーブル・エントリ内の前記フォーマット制御フィールドがイネーブルであるかどうかを判定するステップと、前記フォーマット制御フィールドがイネーブルであることに応答して、前記セグメント・テーブル・エントリ内のアクセス妥当性フィールドがイネーブルであるかどうかを判定するステップであって、前記セグメント・テーブル・エントリが、前記アクセス妥当性フィールド、セグメント・アクセス制御フィールド、セグメント・フェッチ保護フィールド、及び主ストレージ内の大データ・ブロックのセグメント・フレーム絶対アドレスを含むステップを実施するステップと、前記アクセス妥当性フィールドがイネーブルであることに応答して、前記所望のメモリ・ブロックへのストアを許可するステップであって、前記ストアは前記仮想アドレスに関連付けられており、前記ストアが、前記セグメント・アクセス制御フィールドが、プログラム・ステータス・ワード又は実行中のプログラム命令のオペランドのうちのいずれか1つによって与えられるプログラム・アクセス・キーに一致したことに応答してのみ許可されるステップと、前記所望のデータ・ブロックからのフェッチを許可するステップであって、前記フェッチは前記仮想アドレスに関連付けられており、a)前記セグメント・フェッチ保護フィールドがディスエーブルであること、又はb)前記セグメント・フェッチ保護フィールドがイネーブルであり、且つ前記仮想アドレスに関連付けられた前記プログラム・アクセス・キーが前記セグメント・アクセス制御フィールドと等しいこと、のいずれかに応答してのみ許可されるステップを実施するステップとを実施するステップとを含む方法。
請求項2
前記変換アドレスが、実アドレス又は絶対アドレスのうちのいずれか1つであり、前記実アドレスに対してプレフィックス付加を行うことによって前記絶対アドレスが形成され、前記変換テーブル階層構造が、領域第1テーブル、領域第2テーブル、領域第3テーブル、及び前記セグメント・テーブルのうちの1つ又は複数から成り、前記セグメント・テーブルから前記セグメント・テーブル・エントリを取得する前記ステップが、A、B、C、Dのうちのいずれか1つを含み、A)前記領域第1テーブルの前記取得された初期基点アドレスに基づいて、前記仮想アドレスの第1インデックス部分を用いて前記領域第2テーブルの基点アドレスを含む前記領域第1テーブル内の領域第1テーブル・エントリを参照し、前記領域第2テーブルの前記基点アドレスに基づいて、前記仮想アドレスの第2インデックス部分を用いて前記領域第3テーブルの基点アドレスを含む前記領域第2テーブル内の領域第2テーブル・エントリを参照し、前記領域第3テーブルの前記基点アドレスに基づいて、前記仮想アドレスの第3インデックス部分を用いて前記セグメント・テーブルの基点アドレスを含む前記領域第3テーブル内の領域第3テーブル・エントリを参照し、前記セグメント・テーブルの前記基点アドレスに基づいて、前記仮想アドレスのセグメント・インデックス部分を用いて前記セグメント・テーブル内のセグメント・テーブル・エントリを参照するステップ、B)前記領域第2テーブルの前記取得された初期基点アドレスに基づいて、前記仮想アドレスの前記第2インデックス部分を用いて前記領域第3テーブルの基点アドレスを含む前記領域第2テーブル内の前記領域第2テーブル・エントリを参照し、前記領域第3テーブルの前記基点アドレスに基づいて、前記仮想アドレスの前記第3インデックス部分を用いて前記セグメント・テーブルの前記基点アドレスを含む前記領域第3テーブル内の前記領域第3テーブル・エントリを参照し、前記セグメント・テーブルの前記基点アドレスに基づいて、前記仮想アドレスの前記セグメント・インデックス部分を用いて前記セグメント・テーブル内の前記セグメント・テーブル・エントリを参照するステップ、C)前記領域第3テーブルの前記取得された初期基点アドレスに基づいて、前記仮想アドレスの前記第3インデックス部分を用いて前記セグメント・テーブルの前記基点アドレスを含む前記領域第3テーブル内の前記領域第3テーブル・エントリを参照し、前記セグメント・テーブルの前記基点アドレスに基づいて、前記仮想アドレスの前記セグメント・インデックス部分を用いて前記セグメント・テーブル内の前記セグメント・テーブル・エントリを参照するステップ、及びD)前記セグメント・テーブルの前記取得された初期基点アドレスに基づいて、前記仮想アドレスの前記セグメント・インデックス部分を用いて前記セグメント・テーブル・エントリを参照するステップである、請求項1に記載の方法。
請求項3
前記強化型DATファシリティがイネーブルであり、且つ前記フォーマット制御フィールドがイネーブルでないことに応答して、前記セグメント・テーブル・エントリからページ・テーブルの基点を取得するステップであって、前記仮想アドレスのページ・インデックス部分を用いて前記ページ・テーブル内のページ・テーブル・エントリを参照するステップと、前記ページ・テーブル・エントリから、主ストレージ内の小データ・ブロックのページ・フレーム実アドレスを取得するステップであって、前記小データ・ブロックは前記大データ・ブロックよりもサイズが小さく、且つ4キロバイトのデータ・ブロックから成り、前記小データ・ブロックは、ストレージ・アクセス制御フィールドとストレージ・フェッチ保護フィールドとを含むストレージ・キーに関連付けられており、主ストレージ内の所望の実データ・ブロックの変換アドレスは、前記ページ・フレーム実アドレスと前記仮想アドレスのバイト・インデックス部分との組合せを含む、ステップと、前記プログラム・アクセス制御フィールドが前記ストレージ・アクセス制御フィールドに一致したことに応答してのみ、前記所望の実メモリ・ブロックに対するストアを許可するステップであって、前記ストアは前記仮想アドレスに関連付けられており、前記プログラム・アクセス・フィールドは、プログラム・ステータス・ワード又は実行中のプロフラム命令のオペランドのうちのいずれか1つを含むプログラム・エンティティによって与えられる、ステップと、a)前記ストレージ・フェッチ保護フィールドがディスエーブルであること、又はb)前記ストレージ・フェッチ保護フィールドがイネーブルであり、且つ前記仮想アドレスに関連付けられたプログラム・アクセス・キーが前記ストレージ・アクセス制御フィールドと等しいこと、のいずれかにのみ応答して、前記所望のデータ・ブロックからのフェッチを許可するステップであって、前記フェッチは前記仮想アドレスに関連付けられており、前記プログラム・アクセス・キーは、プログラム・ステータス・ワード又は実行中のプログラム命令のオペランドのうちのいずれか1つによって与えられる、ステップとを実施する、請求項2に記載の方法。
請求項4
前記強化型DATファシリティがイネーブルでないことに応答して、前記セグメント・テーブル・エントリからページ・テーブルの基点を取得し、前記仮想アドレスのページ・インデックス部分を用いて前記ページ・テーブル内のページ・テーブル・エントリを参照するステップと、前記ページ・テーブル・エントリから、主ストレージ内の小データ・ブロックのページ・フレーム実アドレスを取得するステップであって、前記小データ・ブロックは前記大データ・ブロックよりもサイズが小さく、且つ、ストレージ・キーに関連付けられた4キロバイトのデータ・ブロックから成り、前記ストレージ・キーは、ストレージ・アクセス制御フィールド及びストレージ・フェッチ保護フィールドを含み、主ストレージ内の所望の実データ・ブロックの変換アドレスは、前記ページ・フレーム実アドレスと前記仮想アドレスのバイト・インデックス部分との組合せを含む、ステップと、前記プログラム・アクセス制御フィールドが前記ストレージ・アクセス制御フィールドに一致したことに応答してのみ、前記所望の実メモリ・ブロックに対するストアを許可するステップであって、前記ストアが前記仮想アドレスに関連付けられる、ステップと、a)前記ストレージ・フェッチ保護フィールドがディスエーブルであること、又はb)前記ストレージ・フェッチ保護フィールドがイネーブルであり、且つ前記仮想アドレスに関連付けられたプログラム・アクセス・キーが前記ストレージ・アクセス制御フィールドに等しいこと、のいずれかにのみ応答して、前記所望のデータ・ブロックからのフェッチを許可するステップであって、前記フェッチは前記仮想アドレスに関連付けられており、前記プログラム・アクセス・キーは、プログラム・ステータス・ワード又は実行中のプログラム命令のオペランドのうちのいずれか1つによって与えられる、ステップとを実施する、請求項2に記載の方法。
請求項5
前記プログラム・アクセス・キーが0であることに応答して、前記所望のメモリ・ブロックへのストア及び前記所望のメモリ・ブロックからのフェッチを許可し、前記ストア及びフェッチが前記仮想アドレスに関連付けられる、請求項1に記載の方法。
請求項6
前記アクセス妥当性フィールド及び前記フェッチ保護フィールドがイネーブルであることに応答して、保護例外が、前記所望のメモリ・ブロックからのフェッチ動作が試行されたこと、且つ前記セグメント・アクセス制御フィールドが前記プログラム・アクセス制御フィールドに一致しないことに応答して示され、前記フェッチ動作が前記仮想アドレスに関連付けられている、請求項1に記載の方法。
請求項7
前記アクセス妥当性フィールドがイネーブルであるかどうかを判定する前記ステップが、a)制御レジスタのストレージ保護オーバーライド・フィールドがディスエーブルかどうか、又はb)前記ストレージ保護オーバーライド・フィールドがイネーブルであり、且つ前記セグメント・アクセス制御フィールドがイネーブルでないかどうか、のうちのいずれか1つを判定するステップをさらに含む、請求項1に記載の方法。
請求項8
前記仮想アドレスの前記変換に用いられた情報を、少なくとも1つの変換ルックアサイド・バッファ内にストアするステップと、その後の仮想アドレスの、主ストレージ内の前記データ・ブロックの前記絶対アドレスへのそれ以降の変換を、前記変換テーブル階層構造ではなく前記変換ルックアサイド・バッファ由来の前記ストアされた情報を用いて実施するステップとをさらに含む、請求項1に記載の方法。
請求項9
前記変換が前記マシン・アーキテクチャに対してネイティブではないことに応答して、前記変換をエミュレートするための所定のソフトウェア・ルーチンを識別するステップであって、前記所定のソフトウェア・ルーチンが複数の命令を含むステップと、前記所定のソフトウェア・ルーチンを実行するステップとをさらに含む、請求項1に記載の方法。
請求項10
前記大データ・ブロックが、少なくとも1メガバイトのサイズのブロックを含む、請求項1に記載の方法。
請求項11
方法に係る請求項1から請求項10のいずれか1項に記載の方法の全てのステップを実行するように適合された手段を備える、システム。
請求項12
コンピュータ・プログラムであって、前記コンピュータ・プログラムがコンピュータ・システム上で実行されるときに、方法に係る請求項1から請求項10のいずれか1項に記載の方法の全てのステップを実行するための命令を含む、コンピュータ・プログラム。
类似技术:
公开号 | 公开日 | 专利标题
US9971533B2|2018-05-15|Managing storage protection faults
US9804970B2|2017-10-31|Invalidating a range of two or more translation table entries and instruction therefor
US9626298B2|2017-04-18|Translation of input/output addresses to memory addresses
US9665500B2|2017-05-30|System supporting multiple partitions with differing translation formats
US20180060246A1|2018-03-01|Linear to physical address translation with support for page attributes
US10802987B2|2020-10-13|Computer processor employing cache memory storing backless cache lines
US9304916B2|2016-04-05|Page invalidation processing with setting of storage key to predefined value
US9195623B2|2015-11-24|Multiple address spaces per adapter with address translation
US8799621B2|2014-08-05|Translation table control
EP2430557B1|2013-10-16|Resizing address spaces concurrent to accessing the address spaces
US7913058B2|2011-03-22|System and method for identifying TLB entries associated with a physical address of a specified range
ES2297417T3|2008-05-01|Invalidacion de almacenamiento, borrado de elementos de la memoria intermedia.
US9355040B2|2016-05-31|Adjunct component to provide full virtualization using paravirtualized hypervisors
US10360032B2|2019-07-23|Performing an operation absent host intervention
TWI622880B|2018-05-01|Computer program products, computer systems and methods for comparing and replacing dynamic address translation entries
KR101396831B1|2014-05-21|메모리 접근 제어 방법
KR20150034661A|2015-04-03|다중-스테이지 어드레스 변환에서의 변환 바이패스
US8650337B2|2014-02-11|Runtime determination of translation formats for adapter functions
US20150089116A1|2015-03-26|Merged TLB Structure For Multiple Sequential Address Translations
US9430402B2|2016-08-30|System and method for providing stealth memory
US5230069A|1993-07-20|Apparatus and method for providing private and shared access to host address and data spaces by guest programs in a virtual machine computer system
US7068545B1|2006-06-27|Data processing apparatus having memory protection unit
EP0548315B1|1997-12-03|Translation buffer for virtual machines with address space match
US7594094B2|2009-09-22|Move data facility with optional specifications
CN101911022B|2012-10-10|具有格式控制的动态地址转换
同族专利:
公开号 | 公开日
US20190303301A1|2019-10-03|
CN101911025A|2010-12-08|
SI2229632T1|2013-06-28|
US20160267017A1|2016-09-15|
KR20100126269A|2010-12-01|
US8677098B2|2014-03-18|
US20140115295A1|2014-04-24|
KR101175615B1|2012-08-22|
DK2229632T3|2013-06-03|
PT2229632E|2013-05-28|
US20150169437A1|2015-06-18|
US9934159B2|2018-04-03|
EP2229632A1|2010-09-22|
ES2408189T3|2013-06-18|
US20180089103A1|2018-03-29|
CY1114228T1|2016-08-31|
WO2009087133A1|2009-07-16|
WO2009087133A9|2009-09-24|
US9378128B2|2016-06-28|
US20090182971A1|2009-07-16|
PL2229632T3|2013-08-30|
US10423539B2|2019-09-24|
US9021225B2|2015-04-28|
CN101911025B|2012-11-07|
EP2229632B1|2013-04-10|
JP5373817B2|2013-12-18|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
JPS62208147A|1986-03-10|1987-09-12|Hitachi Ltd|Expansion address converter|
JPH1091597A|1996-08-13|1998-04-10|Internatl Business Mach Corp <Ibm>|マルチプロセッサ装置におけるトークンにもとづく命令の直列化|
JP2004326771A|2003-04-22|2004-11-18|Internatl Business Mach Corp <Ibm>|共用仮想記憶を管理する方法および装置|JP2013537658A|2010-06-23|2013-10-03|インターナショナル・ビジネス・マシーンズ・コーポレーションInternationalBusinessMachinesCorporation|入力/出力アドレスをメモリ・アドレスに変換するための方法、コンピュータ・システム、およびコンピュータ・プログラム|USRE37305E1|1982-12-30|2001-07-31|International Business Machines Corporation|Virtual memory address translation mechanism with controlled data persistence|
US4669043A|1984-02-17|1987-05-26|Signetics Corporation|Memory access controller|
US4972338A|1985-06-13|1990-11-20|Intel Corporation|Memory management for microprocessor system|
JP2635058B2|1987-11-11|1997-07-30|株式会社日立製作所|アドレス変換方式|
US5008811A|1988-02-10|1991-04-16|International Business Machines Corp.|Control mechanism for zero-origin data spaces|
US5058003A|1988-12-15|1991-10-15|International Business Machines Corporation|Virtual storage dynamic address translation mechanism for multiple-sized pages|
US5617554A|1992-02-10|1997-04-01|Intel Corporation|Physical address size selection and page size selection in an address translator|
WO1994027215A1|1993-05-07|1994-11-24|Apple Computer, Inc.|Method for decoding guest instructions for a host computer|
US5551013A|1994-06-03|1996-08-27|International Business Machines Corporation|Multiprocessor for hardware emulation|
US5845331A|1994-09-28|1998-12-01|Massachusetts Institute Of Technology|Memory system including guarded pointers|
US5790825A|1995-11-08|1998-08-04|Apple Computer, Inc.|Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions|
US6009261A|1997-12-16|1999-12-28|International Business Machines Corporation|Preprocessing of stored target routines for emulating incompatible instructions on a target processor|
US6415305B1|1998-04-20|2002-07-02|Microsoft Corporation|Method for displaying editable characters in a divided table cell|
US6308255B1|1998-05-26|2001-10-23|Advanced Micro Devices, Inc.|Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system|
US6463582B1|1998-10-21|2002-10-08|Fujitsu Limited|Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method|
JP2004328771A|1999-02-05|2004-11-18|Sony Corp|エンコーディング装置及び方法、デコーディング装置及び方法、並びに記録媒体|
DE10002120B4|1999-02-13|2006-04-20|International Business Machines Corp.|Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung|
US7069412B2|1999-02-17|2006-06-27|Elbrus International|Method of using a plurality of virtual memory spaces for providing efficient binary compatibility between a plurality of source architectures and a single target architecture|
US6879989B2|1999-08-16|2005-04-12|International Business Machines Corporation|Modification system for supporting localized data changes in a mobile device|
US6574706B2|2001-02-28|2003-06-03|International Business Machines Corporation|Managing unvirtualized data pages in real storage|
US6985951B2|2001-03-08|2006-01-10|International Business Machines Corporation|Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment|
US7299243B2|2001-09-19|2007-11-20|Bmc Software, Inc.|System and method for controlling free space distribution by key range within a database|
US7120746B2|2002-09-09|2006-10-10|International Business Machines Corporation|Technique for data transfer|
US7703097B2|2002-11-15|2010-04-20|International Business Machines Corporation|Auto-commit processing in an IMS batch application|
US6996698B2|2003-05-12|2006-02-07|International Business Machines Corporation|Blocking processing restrictions based on addresses|
US7020761B2|2003-05-12|2006-03-28|International Business Machines Corporation|Blocking processing restrictions based on page indices|
US7284100B2|2003-05-12|2007-10-16|International Business Machines Corporation|Invalidating storage, clearing buffer entries, and an instruction therefor|
US7530067B2|2003-05-12|2009-05-05|International Business Machines Corporation|Filtering processor requests based on identifiers|
DE60311462T2|2003-09-19|2008-01-03|Sun Microsystems, Inc., Santa Clara|Method and apparatus for protocol processing in computer systems using the translation of memory addresses|
US7234037B2|2003-11-25|2007-06-19|International Business Machines Corporation|Memory mapped Input/Output operations|
US7941799B2|2004-05-27|2011-05-10|International Business Machines Corporation|Interpreting I/O operation requests from pageable guests without host intervention|
US8214622B2|2004-05-27|2012-07-03|International Business Machines Corporation|Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment|
GB2415578B|2004-06-23|2007-07-04|Hewlett Packard Development Co|Restricting virus access to a network|
CN100377117C|2005-07-14|2008-03-26|中国科学院计算技术研究所|用于虚实地址变换及读写高速缓冲存储器的方法及装置|
US8387049B2|2005-07-15|2013-02-26|International Business Machines Corporation|Facilitating processing within computing environments supporting pageable guests|
US7464249B2|2005-07-26|2008-12-09|International Business Machines Corporation|System and method for alias mapping of address space|
JP4469783B2|2005-11-28|2010-05-26|株式会社東芝|メモリ保護装置、メモリ保護システムおよびメモリ保護方法|
US8677098B2|2008-01-11|2014-03-18|International Business Machines Corporation|Dynamic address translation with fetch protection|
US8019964B2|2008-01-11|2011-09-13|International Buisness Machines Corporation|Dynamic address translation with DAT protection|
US8417916B2|2008-01-11|2013-04-09|International Business Machines Corporation|Perform frame management function instruction for setting storage keys and clearing blocks of main storage|
US8117417B2|2008-01-11|2012-02-14|International Business Machines Corporation|Dynamic address translation with change record override|
US8103851B2|2008-01-11|2012-01-24|International Business Machines Corporation|Dynamic address translation with translation table entry format control for indentifying format of the translation table entry|
US8041922B2|2008-01-11|2011-10-18|International Business Machines Corporation|Enhanced dynamic address translation with load real address function|
US8082405B2|2008-01-11|2011-12-20|International Business Machines Corporation|Dynamic address translation with fetch protection|
US8151083B2|2008-01-11|2012-04-03|International Business Machines Corporation|Dynamic address translation with frame management|
US8041923B2|2008-01-11|2011-10-18|International Business Machines Corporation|Load page table entry address instruction execution based on an address translation format control field|
US8335906B2|2008-01-11|2012-12-18|International Business Machines Corporation|Perform frame management function instruction for clearing blocks of main storage|
US8037278B2|2008-01-11|2011-10-11|International Business Machines Corporation|Dynamic address translation with format control|
US8095773B2|2008-02-26|2012-01-10|International Business Machines Corporation|Dynamic address translation with translation exception qualifier|US8117417B2|2008-01-11|2012-02-14|International Business Machines Corporation|Dynamic address translation with change record override|
US8417916B2|2008-01-11|2013-04-09|International Business Machines Corporation|Perform frame management function instruction for setting storage keys and clearing blocks of main storage|
US8151083B2|2008-01-11|2012-04-03|International Business Machines Corporation|Dynamic address translation with frame management|
US8041922B2|2008-01-11|2011-10-18|International Business Machines Corporation|Enhanced dynamic address translation with load real address function|
US8335906B2|2008-01-11|2012-12-18|International Business Machines Corporation|Perform frame management function instruction for clearing blocks of main storage|
US8041923B2|2008-01-11|2011-10-18|International Business Machines Corporation|Load page table entry address instruction execution based on an address translation format control field|
US8019964B2|2008-01-11|2011-09-13|International Buisness Machines Corporation|Dynamic address translation with DAT protection|
US8037278B2|2008-01-11|2011-10-11|International Business Machines Corporation|Dynamic address translation with format control|
US8103851B2|2008-01-11|2012-01-24|International Business Machines Corporation|Dynamic address translation with translation table entry format control for indentifying format of the translation table entry|
US8082405B2|2008-01-11|2011-12-20|International Business Machines Corporation|Dynamic address translation with fetch protection|
US8677098B2|2008-01-11|2014-03-18|International Business Machines Corporation|Dynamic address translation with fetch protection|
US8086811B2|2008-02-25|2011-12-27|International Business Machines Corporation|Optimizations of a perform frame management function issued by pageable guests|
US8095773B2|2008-02-26|2012-01-10|International Business Machines Corporation|Dynamic address translation with translation exception qualifier|
US9195623B2|2010-06-23|2015-11-24|International Business Machines Corporation|Multiple address spaces per adapter with address translation|
US8615645B2|2010-06-23|2013-12-24|International Business Machines Corporation|Controlling the selectively setting of operational parameters for an adapter|
US9213661B2|2010-06-23|2015-12-15|International Business Machines Corporation|Enable/disable adapters of a computing environment|
US9342352B2|2010-06-23|2016-05-17|International Business Machines Corporation|Guest access to address spaces of adapter|
US8782434B1|2010-07-15|2014-07-15|The Research Foundation For The State University Of New York|System and method for validating program execution at run-time|
US9063721B2|2012-09-14|2015-06-23|The Research Foundation For The State University Of New York|Continuous run-time validation of program execution: a practical approach|
US9069782B2|2012-10-01|2015-06-30|The Research Foundation For The State University Of New York|System and method for security and privacy aware virtual machine checkpointing|
GB2514618B|2013-05-31|2020-11-11|Advanced Risc Mach Ltd|Data processing systems|
WO2015075674A1|2013-11-21|2015-05-28|Green Cache AB|Systems and methods for direct data access in multi-level cache memory hierarchies|
US20150261693A1|2014-03-14|2015-09-17|International Business Machines Corporation|Dynamic storage key assignment|
US9582295B2|2014-03-18|2017-02-28|International Business Machines Corporation|Architectural mode configuration|
US9916185B2|2014-03-18|2018-03-13|International Business Machines Corporation|Managing processing associated with selected architectural facilities|
US10402331B2|2014-05-29|2019-09-03|Samsung Electronics Co., Ltd.|Systems and methods for implementing a tag-less shared cache and a larger backing cache|
TWI570559B|2015-12-28|2017-02-11|點序科技股份有限公司|快閃記憶體及其存取方法|
US10565126B2|2017-07-14|2020-02-18|Arm Limited|Method and apparatus for two-layer copy-on-write|
US10467159B2|2017-07-14|2019-11-05|Arm Limited|Memory node controller|
US10613989B2|2017-07-14|2020-04-07|Arm Limited|Fast address translation for virtual machines|
US10534719B2|2017-07-14|2020-01-14|Arm Limited|Memory system for a data processing network|
US10489304B2|2017-07-14|2019-11-26|Arm Limited|Memory address translation|
US10353826B2|2017-07-14|2019-07-16|Arm Limited|Method and apparatus for fast context cloning in a data processing system|
US10592424B2|2017-07-14|2020-03-17|Arm Limited|Range-based memory system|
法律状态:
2011-10-18| A621| Written request for application examination|Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111017 |
2013-04-23| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130423 |
2013-05-29| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130528 |
2013-08-08| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130807 |
2013-08-23| TRDD| Decision of grant or rejection written|
2013-08-28| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130827 |
2013-09-26| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130919 |
2013-09-27| R150| Certificate of patent or registration of utility model|Ref document number: 5373817 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]